[flang-commits] [flang] 9391ce9 - [flang][NFC] Converted five tests from old lowering to new lowering (part 38) (#188151)
via flang-commits
flang-commits at lists.llvm.org
Tue Mar 24 08:25:34 PDT 2026
Author: Eugene Epshteyn
Date: 2026-03-24T11:25:28-04:00
New Revision: 9391ce93a1b82b85890e5d15b36849b542e11db8
URL: https://github.com/llvm/llvm-project/commit/9391ce93a1b82b85890e5d15b36849b542e11db8
DIFF: https://github.com/llvm/llvm-project/commit/9391ce93a1b82b85890e5d15b36849b542e11db8.diff
LOG: [flang][NFC] Converted five tests from old lowering to new lowering (part 38) (#188151)
Tests converted from test/Lower/Intrinsics: pack.f90, parity.f90,
popcnt.f90, poppar.f90, present.f90
Added:
Modified:
flang/test/Lower/Intrinsics/pack.f90
flang/test/Lower/Intrinsics/parity.f90
flang/test/Lower/Intrinsics/popcnt.f90
flang/test/Lower/Intrinsics/poppar.f90
flang/test/Lower/Intrinsics/present.f90
Removed:
################################################################################
diff --git a/flang/test/Lower/Intrinsics/pack.f90 b/flang/test/Lower/Intrinsics/pack.f90
index f4eeef7747a82..777b5e65ebbd9 100644
--- a/flang/test/Lower/Intrinsics/pack.f90
+++ b/flang/test/Lower/Intrinsics/pack.f90
@@ -1,6 +1,6 @@
-! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s
-! CHECK-LABEL: pack_test
+! CHECK-LABEL: func.func @_QPpack_test(
! CHECK-SAME: %[[arg0:[^:]+]]: !fir.box<!fir.array<?xi32>>
! CHECK-SAME: %[[arg1:.*]]: !fir.box<!fir.array<?x!fir.logical<4>>>
! CHECK-SAME: %[[arg2:[^:]+]]: !fir.box<!fir.array<?xi32>>
@@ -10,31 +10,32 @@ subroutine pack_test(a,m,v,r)
logical :: m(:)
integer :: v(:)
integer :: r(:)
- ! CHECK: %[[a0:.*]] = fir.alloca !fir.box<!fir.heap<!fir.array<?xi32>>>
- ! CHECK: %[[a5:.*]] = fir.convert %[[a0]] : (!fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>) -> !fir.ref<!fir.box<none>>
- ! CHECK: %[[a6:.*]] = fir.convert %[[arg0]] : (!fir.box<!fir.array<?xi32>>) -> !fir.box<none>
- ! CHECK: %[[a7:.*]] = fir.convert %[[arg1]] : (!fir.box<!fir.array<?x!fir.logical<4>>>) -> !fir.box<none>
- ! CHECK: %[[a8:.*]] = fir.convert %[[arg2]] : (!fir.box<!fir.array<?xi32>>) -> !fir.box<none>
- r = pack(a,m,v)
- ! CHECK: fir.call @_FortranAPack(%[[a5]], %[[a6]], %[[a7]], %[[a8]], %{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<!fir.box<none>>, !fir.box<none>, !fir.box<none>, !fir.box<none>, !fir.ref<i8>, i32) -> ()
- ! CHECK: %[[a11:.*]] = fir.load %[[a0]] : !fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>
- ! CHECK: %[[a13:.*]] = fir.box_addr %[[a11]] : (!fir.box<!fir.heap<!fir.array<?xi32>>>) -> !fir.heap<!fir.array<?xi32>>
- ! CHECK: fir.freemem %[[a13]]
+! CHECK-DAG: %[[a0:.*]] = fir.alloca !fir.box<!fir.heap<!fir.array<?xi32>>>
+! CHECK-DAG: %[[A:.*]]:2 = hlfir.declare %[[arg0]]
+! CHECK-DAG: %[[M:.*]]:2 = hlfir.declare %[[arg1]]
+! CHECK-DAG: %[[V:.*]]:2 = hlfir.declare %[[arg2]]
+ r = pack(a,m,v)
+! CHECK: %[[a5:.*]] = fir.convert %[[a0]] : (!fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>) -> !fir.ref<!fir.box<none>>
+! CHECK: %[[a6:.*]] = fir.convert %[[A]]#1 : (!fir.box<!fir.array<?xi32>>) -> !fir.box<none>
+! CHECK: %[[a7:.*]] = fir.convert %[[M]]#1 : (!fir.box<!fir.array<?x!fir.logical<4>>>) -> !fir.box<none>
+! CHECK: %[[a8:.*]] = fir.convert %[[V]]#1 : (!fir.box<!fir.array<?xi32>>) -> !fir.box<none>
+! CHECK: fir.call @_FortranAPack(%[[a5]], %[[a6]], %[[a7]], %[[a8]], %{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<!fir.box<none>>, !fir.box<none>, !fir.box<none>, !fir.box<none>, !fir.ref<i8>, i32) -> ()
end subroutine
- ! CHECK-LABEL: func @_QPtest_pack_optional(
+ ! CHECK-LABEL: func.func @_QPtest_pack_optional(
! CHECK-SAME: %[[VAL_0:.*]]: !fir.ref<!fir.box<!fir.ptr<!fir.array<?xi32>>>>
subroutine test_pack_optional(vector, array, mask)
integer, pointer :: vector(:)
integer :: array(:, :)
logical :: mask(:, :)
print *, pack(array, mask, vector)
- ! CHECK: %[[VAL_9:.*]] = fir.load %[[VAL_0]] : !fir.ref<!fir.box<!fir.ptr<!fir.array<?xi32>>>>
+ ! CHECK: %[[VDECL:.*]]:2 = hlfir.declare %[[VAL_0]]
+ ! CHECK: %[[VAL_9:.*]] = fir.load %[[VDECL]]#0 : !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_0]] : !fir.ref<!fir.box<!fir.ptr<!fir.array<?xi32>>>>
+ ! CHECK: %[[VAL_14:.*]] = fir.load %[[VDECL]]#0 : !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_26:.*]] = fir.convert %[[VAL_16]] : (!fir.box<!fir.ptr<!fir.array<?xi32>>>) -> !fir.box<none>
diff --git a/flang/test/Lower/Intrinsics/parity.f90 b/flang/test/Lower/Intrinsics/parity.f90
index d8ff01b7be975..6cd906b9321e7 100644
--- a/flang/test/Lower/Intrinsics/parity.f90
+++ b/flang/test/Lower/Intrinsics/parity.f90
@@ -1,18 +1,18 @@
-! 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: parity_test
+! CHECK-LABEL: func.func @_QPparity_test(
! CHECK-SAME: %[[arg0:.*]]: !fir.box<!fir.array<?x!fir.logical<4>>>{{.*}}) -> !fir.logical<4>
logical function parity_test(mask)
logical :: mask(:)
- ! CHECK: %[[c1:.*]] = arith.constant 1 : index
- ! CHECK: %[[a1:.*]] = fir.convert %[[arg0]] : (!fir.box<!fir.array<?x!fir.logical<4>>>) -> !fir.box<none>
- ! CHECK: %[[a2:.*]] = fir.convert %[[c1]] : (index) -> i32
+! CHECK: %[[MASK:.*]]:2 = hlfir.declare %[[arg0]]
+! CHECK: %[[c1:.*]] = arith.constant 1 : index
+! CHECK: %[[a1:.*]] = fir.convert %[[MASK]]#1 : (!fir.box<!fir.array<?x!fir.logical<4>>>) -> !fir.box<none>
+! CHECK: %[[a2:.*]] = fir.convert %[[c1]] : (index) -> i32
parity_test = parity(mask)
- ! CHECK: %[[a3:.*]] = fir.call @_FortranAParity(%[[a1]], %{{.*}}, %{{.*}}, %[[a2]]) {{.*}}: (!fir.box<none>, !fir.ref<i8>, i32, i32) -> i1
+! CHECK: %[[a3:.*]] = fir.call @_FortranAParity(%[[a1]], %{{.*}}, %{{.*}}, %[[a2]]) {{.*}}: (!fir.box<none>, !fir.ref<i8>, i32, i32) -> i1
end function parity_test
-! CHECK-LABEL: parity_test2
+! CHECK-LABEL: func.func @_QPparity_test2(
! CHECK-SAME: %[[arg0:.*]]: !fir.box<!fir.array<?x?x!fir.logical<4>>>
! CHECK-SAME: %[[arg1:.*]]: !fir.ref<i32>
! CHECK-SAME: %[[arg2:.*]]: !fir.box<!fir.array<?x!fir.logical<4>>>
@@ -20,13 +20,12 @@ subroutine parity_test2(mask, d, rslt)
logical :: mask(:,:)
integer :: d
logical :: rslt(:)
- ! CHECK-DAG: %[[a0:.*]] = fir.alloca !fir.box<!fir.heap<!fir.array<?x!fir.logical<4>>>>
- ! CHECK-DAG: %[[a1:.*]] = fir.load %[[arg1:.*]] : !fir.ref<i32>
- ! CHECK-DAG: %[[a6:.*]] = fir.convert %[[a0:.*]] : (!fir.ref<!fir.box<!fir.heap<!fir.array<?x!fir.logical<4>>>>>) -> !fir.ref<!fir.box<none>>
- ! CHECK-DAG: %[[a7:.*]] = fir.convert %[[arg0:.*]]: (!fir.box<!fir.array<?x?x!fir.logical<4>>>) -> !fir.box<none>
+! CHECK-DAG: %[[a0:.*]] = fir.alloca !fir.box<!fir.heap<!fir.array<?x!fir.logical<4>>>>
+! CHECK-DAG: %[[MASK:.*]]:2 = hlfir.declare %[[arg0]]
+! CHECK-DAG: %[[D:.*]]:2 = hlfir.declare %[[arg1]]
+! CHECK-DAG: %[[a1:.*]] = fir.load %[[D]]#0 : !fir.ref<i32>
+! CHECK-DAG: %[[a6:.*]] = fir.convert %[[a0]] : (!fir.ref<!fir.box<!fir.heap<!fir.array<?x!fir.logical<4>>>>>) -> !fir.ref<!fir.box<none>>
+! CHECK-DAG: %[[a7:.*]] = fir.convert %[[MASK]]#1 : (!fir.box<!fir.array<?x?x!fir.logical<4>>>) -> !fir.box<none>
rslt = parity(mask, d)
- ! CHECK: fir.call @_FortranAParityDim(%[[a6:.*]], %[[a7:.*]], %[[a1:.*]], %{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<!fir.box<none>>, !fir.box<none>, i32, !fir.ref<i8>, i32) -> ()
- ! CHECK-DAG: %[[a10:.*]] = fir.load %[[a0:.*]] : !fir.ref<!fir.box<!fir.heap<!fir.array<?x!fir.logical<4>>>>>
- ! CHECK-DAG: %[[a12:.*]] = fir.box_addr %[[a10:.*]] : (!fir.box<!fir.heap<!fir.array<?x!fir.logical<4>>>>) -> !fir.heap<!fir.array<?x!fir.logical<4>>>
- ! CHECK-DAG: fir.freemem %[[a12:.*]]
+! CHECK: fir.call @_FortranAParityDim(%[[a6]], %[[a7]], %[[a1]], %{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<!fir.box<none>>, !fir.box<none>, i32, !fir.ref<i8>, i32) -> ()
end subroutine parity_test2
diff --git a/flang/test/Lower/Intrinsics/popcnt.f90 b/flang/test/Lower/Intrinsics/popcnt.f90
index 175b29edd86ea..357cdee4c2c9a 100644
--- a/flang/test/Lower/Intrinsics/popcnt.f90
+++ b/flang/test/Lower/Intrinsics/popcnt.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: popcnt1_test
-! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i8>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}}
+! CHECK-LABEL: func.func @_QPpopcnt1_test(
+! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i8>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}})
subroutine popcnt1_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 = popcnt(a)
- ! CHECK: %[[COUNT:.*]] = math.ctpop %[[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.ctpop %[[AVAL]] : i8
+! CHECK: %[[RESULT:.*]] = fir.convert %[[COUNT]] : (i8) -> i32
+! CHECK: hlfir.assign %[[RESULT]] to %[[B]]#0 : i32, !fir.ref<i32>
end subroutine popcnt1_test
-! CHECK-LABEL: popcnt2_test
-! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i16>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}}
+! CHECK-LABEL: func.func @_QPpopcnt2_test(
+! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i16>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}})
subroutine popcnt2_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 = popcnt(a)
- ! CHECK: %[[COUNT:.*]] = math.ctpop %[[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.ctpop %[[AVAL]] : i16
+! CHECK: %[[RESULT:.*]] = fir.convert %[[COUNT]] : (i16) -> i32
+! CHECK: hlfir.assign %[[RESULT]] to %[[B]]#0 : i32, !fir.ref<i32>
end subroutine popcnt2_test
-! CHECK-LABEL: popcnt4_test
-! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i32>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}}
+! CHECK-LABEL: func.func @_QPpopcnt4_test(
+! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i32>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}})
subroutine popcnt4_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 = popcnt(a)
- ! CHECK: %[[RESULT:.*]] = math.ctpop %[[AVAL]] : i32
- ! CHECK: fir.store %[[RESULT]] to %[[BREF]] : !fir.ref<i32>
+! CHECK-DAG: %[[AVAL:.*]] = fir.load %[[A]]#0 : !fir.ref<i32>
+! CHECK: %[[RESULT:.*]] = math.ctpop %[[AVAL]] : i32
+! CHECK: hlfir.assign %[[RESULT]] to %[[B]]#0 : i32, !fir.ref<i32>
end subroutine popcnt4_test
-! CHECK-LABEL: popcnt8_test
-! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i64>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}}
+! CHECK-LABEL: func.func @_QPpopcnt8_test(
+! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i64>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}})
subroutine popcnt8_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 = popcnt(a)
- ! CHECK: %[[COUNT:.*]] = math.ctpop %[[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.ctpop %[[AVAL]] : i64
+! CHECK: %[[RESULT:.*]] = fir.convert %[[COUNT]] : (i64) -> i32
+! CHECK: hlfir.assign %[[RESULT]] to %[[B]]#0 : i32, !fir.ref<i32>
end subroutine popcnt8_test
-! CHECK-LABEL: popcnt16_test
-! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i128>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}}
+! CHECK-LABEL: func.func @_QPpopcnt16_test(
+! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i128>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}})
subroutine popcnt16_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 = popcnt(a)
- ! CHECK: %[[COUNT:.*]] = math.ctpop %[[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.ctpop %[[AVAL]] : i128
+! CHECK: %[[RESULT:.*]] = fir.convert %[[COUNT]] : (i128) -> i32
+! CHECK: hlfir.assign %[[RESULT]] to %[[B]]#0 : i32, !fir.ref<i32>
end subroutine popcnt16_test
diff --git a/flang/test/Lower/Intrinsics/poppar.f90 b/flang/test/Lower/Intrinsics/poppar.f90
index f3c3ccf6cbdd4..84e4d9830c7ac 100644
--- a/flang/test/Lower/Intrinsics/poppar.f90
+++ b/flang/test/Lower/Intrinsics/poppar.f90
@@ -1,76 +1,85 @@
-! 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: poppar1_test
-! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i8>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}}
+! CHECK-LABEL: func.func @_QPpoppar1_test(
+! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i8>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}})
subroutine poppar1_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 = poppar(a)
- ! CHECK: %[[COUNT:.*]] = math.ctpop %[[AVAL]] : i8
- ! CHECK: %[[CONV:.*]] = fir.convert %[[COUNT]] : (i8) -> i32
- ! CHECK: %[[C1:.*]] = arith.constant 1 : i32
- ! CHECK: %[[RESULT:.*]] = arith.andi %[[CONV]], %[[C1]] : i32
- ! CHECK: fir.store %[[RESULT]] to %[[BREF]] : !fir.ref<i32>
+! CHECK-DAG: %[[AVAL:.*]] = fir.load %[[A]]#0 : !fir.ref<i8>
+! CHECK: %[[COUNT:.*]] = math.ctpop %[[AVAL]] : i8
+! CHECK: %[[CONV:.*]] = fir.convert %[[COUNT]] : (i8) -> i32
+! CHECK: %[[C1:.*]] = arith.constant 1 : i32
+! CHECK: %[[RESULT:.*]] = arith.andi %[[CONV]], %[[C1]] : i32
+! CHECK: hlfir.assign %[[RESULT]] to %[[B]]#0 : i32, !fir.ref<i32>
end subroutine poppar1_test
-! CHECK-LABEL: poppar2_test
-! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i16>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}}
+! CHECK-LABEL: func.func @_QPpoppar2_test(
+! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i16>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}})
subroutine poppar2_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 = poppar(a)
- ! CHECK: %[[COUNT:.*]] = math.ctpop %[[AVAL]] : i16
- ! CHECK: %[[CONV:.*]] = fir.convert %[[COUNT]] : (i16) -> i32
- ! CHECK: %[[C1:.*]] = arith.constant 1 : i32
- ! CHECK: %[[RESULT:.*]] = arith.andi %[[CONV]], %[[C1]] : i32
- ! CHECK: fir.store %[[RESULT]] to %[[BREF]] : !fir.ref<i32>
+! CHECK-DAG: %[[AVAL:.*]] = fir.load %[[A]]#0 : !fir.ref<i16>
+! CHECK: %[[COUNT:.*]] = math.ctpop %[[AVAL]] : i16
+! CHECK: %[[CONV:.*]] = fir.convert %[[COUNT]] : (i16) -> i32
+! CHECK: %[[C1:.*]] = arith.constant 1 : i32
+! CHECK: %[[RESULT:.*]] = arith.andi %[[CONV]], %[[C1]] : i32
+! CHECK: hlfir.assign %[[RESULT]] to %[[B]]#0 : i32, !fir.ref<i32>
end subroutine poppar2_test
-! CHECK-LABEL: poppar4_test
-! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i32>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}}
+! CHECK-LABEL: func.func @_QPpoppar4_test(
+! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i32>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}})
subroutine poppar4_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 = poppar(a)
- ! CHECK: %[[COUNT:.*]] = math.ctpop %[[AVAL]] : i32
- ! CHECK: %[[C1:.*]] = arith.constant 1 : i32
- ! CHECK: %[[RESULT:.*]] = arith.andi %[[COUNT]], %[[C1]] : i32
- ! CHECK: fir.store %[[RESULT]] to %[[BREF]] : !fir.ref<i32>
+! CHECK-DAG: %[[AVAL:.*]] = fir.load %[[A]]#0 : !fir.ref<i32>
+! CHECK: %[[COUNT:.*]] = math.ctpop %[[AVAL]] : i32
+! CHECK: %[[C1:.*]] = arith.constant 1 : i32
+! CHECK: %[[RESULT:.*]] = arith.andi %[[COUNT]], %[[C1]] : i32
+! CHECK: hlfir.assign %[[RESULT]] to %[[B]]#0 : i32, !fir.ref<i32>
end subroutine poppar4_test
-! CHECK-LABEL: poppar8_test
-! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i64>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}}
+! CHECK-LABEL: func.func @_QPpoppar8_test(
+! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i64>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}})
subroutine poppar8_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 = poppar(a)
- ! CHECK: %[[COUNT:.*]] = math.ctpop %[[AVAL]] : i64
- ! CHECK: %[[CONV:.*]] = fir.convert %[[COUNT]] : (i64) -> i32
- ! CHECK: %[[C1:.*]] = arith.constant 1 : i32
- ! CHECK: %[[RESULT:.*]] = arith.andi %[[CONV]], %[[C1]] : i32
- ! CHECK: fir.store %[[RESULT]] to %[[BREF]] : !fir.ref<i32>
+! CHECK-DAG: %[[AVAL:.*]] = fir.load %[[A]]#0 : !fir.ref<i64>
+! CHECK: %[[COUNT:.*]] = math.ctpop %[[AVAL]] : i64
+! CHECK: %[[CONV:.*]] = fir.convert %[[COUNT]] : (i64) -> i32
+! CHECK: %[[C1:.*]] = arith.constant 1 : i32
+! CHECK: %[[RESULT:.*]] = arith.andi %[[CONV]], %[[C1]] : i32
+! CHECK: hlfir.assign %[[RESULT]] to %[[B]]#0 : i32, !fir.ref<i32>
end subroutine poppar8_test
-! CHECK-LABEL: poppar16_test
-! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i128>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}}
+! CHECK-LABEL: func.func @_QPpoppar16_test(
+! CHECK-SAME: %[[AREF:.*]]: !fir.ref<i128>{{.*}}, %[[BREF:.*]]: !fir.ref<i32>{{.*}})
subroutine poppar16_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 = poppar(a)
- ! CHECK: %[[COUNT:.*]] = math.ctpop %[[AVAL]] : i128
- ! CHECK: %[[CONV:.*]] = fir.convert %[[COUNT]] : (i128) -> i32
- ! CHECK: %[[C1:.*]] = arith.constant 1 : i32
- ! CHECK: %[[RESULT:.*]] = arith.andi %[[CONV]], %[[C1]] : i32
- ! CHECK: fir.store %[[RESULT]] to %[[BREF]] : !fir.ref<i32>
+! CHECK-DAG: %[[AVAL:.*]] = fir.load %[[A]]#0 : !fir.ref<i128>
+! CHECK: %[[COUNT:.*]] = math.ctpop %[[AVAL]] : i128
+! CHECK: %[[CONV:.*]] = fir.convert %[[COUNT]] : (i128) -> i32
+! CHECK: %[[C1:.*]] = arith.constant 1 : i32
+! CHECK: %[[RESULT:.*]] = arith.andi %[[CONV]], %[[C1]] : i32
+! CHECK: hlfir.assign %[[RESULT]] to %[[B]]#0 : i32, !fir.ref<i32>
end subroutine poppar16_test
diff --git a/flang/test/Lower/Intrinsics/present.f90 b/flang/test/Lower/Intrinsics/present.f90
index f78f93c89fe40..1971ee4b03981 100644
--- a/flang/test/Lower/Intrinsics/present.f90
+++ b/flang/test/Lower/Intrinsics/present.f90
@@ -1,10 +1,11 @@
-! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s
-! CHECK-LABEL: present_test
+! CHECK-LABEL: func.func @_QPpresent_test(
! CHECK-SAME: %[[arg0:[^:]+]]: !fir.box<!fir.array<?xi32>>
subroutine present_test(a)
integer, optional :: a(:)
if (present(a)) print *,a
- ! CHECK: %{{.*}} = fir.is_present %[[arg0]] : (!fir.box<!fir.array<?xi32>>) -> i1
+! CHECK: %[[ADECL:.*]]:2 = hlfir.declare %[[arg0]]
+! CHECK: %{{.*}} = fir.is_present %[[ADECL]]#1 : (!fir.box<!fir.array<?xi32>>) -> i1
end subroutine
More information about the flang-commits
mailing list