[flang-commits] [flang] c113a14 - [flang][NFC] Converted five tests from old lowering to new lowering (part 10) (#178357)
via flang-commits
flang-commits at lists.llvm.org
Wed Jan 28 09:17:42 PST 2026
Author: Eugene Epshteyn
Date: 2026-01-28T12:17:37-05:00
New Revision: c113a1405a7b36db3e9d1d8ad2c4b87c157d3a2e
URL: https://github.com/llvm/llvm-project/commit/c113a1405a7b36db3e9d1d8ad2c4b87c157d3a2e
DIFF: https://github.com/llvm/llvm-project/commit/c113a1405a7b36db3e9d1d8ad2c4b87c157d3a2e.diff
LOG: [flang][NFC] Converted five tests from old lowering to new lowering (part 10) (#178357)
Tests converted from test/Lower: c_ptr-constant-init.f90,
complex-real.f90,
computed-goto.f90, constant-literal-mangling.f90, control-flow.f90
---------
Co-authored-by: Jean Perier <jperier at nvidia.com>
Added:
Modified:
flang/test/Lower/c_ptr-constant-init.f90
flang/test/Lower/complex-real.f90
flang/test/Lower/computed-goto.f90
flang/test/Lower/constant-literal-mangling.f90
flang/test/Lower/control-flow.f90
Removed:
################################################################################
diff --git a/flang/test/Lower/c_ptr-constant-init.f90 b/flang/test/Lower/c_ptr-constant-init.f90
index b75ed55f1a4f3..e76bae8dcd03a 100644
--- a/flang/test/Lower/c_ptr-constant-init.f90
+++ b/flang/test/Lower/c_ptr-constant-init.f90
@@ -1,5 +1,5 @@
! Test creation of outlined literal array with c_ptr/c_funptr elements.
-! RUN: bbc -emit-fir -hlfir=false -o - %s | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir -o - %s | FileCheck %s
subroutine test
use, intrinsic :: iso_c_binding
@@ -10,15 +10,15 @@ subroutine test
type(t1) :: y(1)
y = x(1)
end subroutine test
-! CHECK-LABEL: fir.global internal @_QQro.1x_QM__fortran_builtinsT__builtin_c_ptr.0 constant : !fir.array<1x!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>> {
-! CHECK: %[[VAL_0:.*]] = fir.undefined !fir.array<1x!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>
-! CHECK: %[[VAL_1:.*]] = fir.undefined !fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>
-! CHECK: %[[VAL_3:.*]] = arith.constant 0 : i64
-! CHECK: %[[VAL_4:.*]] = fir.insert_value %[[VAL_1]], %[[VAL_3]], ["__address", !fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>] : (!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>, i64) -> !fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>
-! CHECK: %[[VAL_5:.*]] = fir.insert_value %[[VAL_0]], %[[VAL_4]], [0 : index] : (!fir.array<1x!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>, !fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>) -> !fir.array<1x!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>
-! CHECK: fir.has_value %[[VAL_5]] : !fir.array<1x!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>
-! CHECK: }
-
+! CHECK-LABEL: fir.global internal @_QQro._QFtestTt1.0 constant : !fir.type<_QFtestTt1{d:!fir.array<1x!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>}> {
+! CHECK: %[[UNDEF:.*]] = fir.undefined !fir.type<_QFtestTt1{d:!fir.array<1x!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>}>
+! CHECK: %[[D_UNDEF:.*]] = fir.undefined !fir.array<1x!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>
+! CHECK: %[[CPTR_UNDEF:.*]] = fir.undefined !fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>
+! CHECK: %[[ADDR:.*]] = fir.insert_value %[[CPTR_UNDEF]], %c0{{.*}}, ["__address", !fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>]
+! CHECK: %[[D_VAL:.*]] = fir.insert_value %[[D_UNDEF]], %[[ADDR]], [0 : index]
+! CHECK: %[[RES:.*]] = fir.insert_value %[[UNDEF]], %[[D_VAL]], ["d", !fir.type<_QFtestTt1{d:!fir.array<1x!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>}>]
+! CHECK: fir.has_value %[[RES]]
+! CHECK: }
subroutine test2
use, intrinsic :: iso_c_binding
@@ -29,11 +29,12 @@ subroutine test2
type(t1) :: y(1)
y = x(1)
end subroutine test2
-! CHECK-LABEL: fir.global internal @_QQro.1x_QM__fortran_builtinsT__builtin_c_funptr.1 constant : !fir.array<1x!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>> {
-! CHECK: %[[VAL_0:.*]] = fir.undefined !fir.array<1x!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>>
-! CHECK: %[[VAL_1:.*]] = fir.undefined !fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>
-! CHECK: %[[VAL_3:.*]] = arith.constant 0 : i64
-! CHECK: %[[VAL_4:.*]] = fir.insert_value %[[VAL_1]], %[[VAL_3]], ["__address", !fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>] : (!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>, i64) -> !fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>
-! CHECK: %[[VAL_5:.*]] = fir.insert_value %[[VAL_0]], %[[VAL_4]], [0 : index] : (!fir.array<1x!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>>, !fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>) -> !fir.array<1x!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>>
-! CHECK: fir.has_value %[[VAL_5]] : !fir.array<1x!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>>
-! CHECK: }
+! CHECK-LABEL: fir.global internal @_QQro._QFtest2Tt1.1 constant : !fir.type<_QFtest2Tt1{d:!fir.array<1x!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>>}> {
+! CHECK: %[[UNDEF:.*]] = fir.undefined !fir.type<_QFtest2Tt1{d:!fir.array<1x!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>>}>
+! CHECK: %[[D_UNDEF:.*]] = fir.undefined !fir.array<1x!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>>
+! CHECK: %[[CPTR_UNDEF:.*]] = fir.undefined !fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>
+! CHECK: %[[ADDR:.*]] = fir.insert_value %[[CPTR_UNDEF]], %c0{{.*}}, ["__address", !fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>]
+! CHECK: %[[D_VAL:.*]] = fir.insert_value %[[D_UNDEF]], %[[ADDR]], [0 : index]
+! CHECK: %[[RES:.*]] = fir.insert_value %[[UNDEF]], %[[D_VAL]], ["d", !fir.type<_QFtest2Tt1{d:!fir.array<1x!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>>}>]
+! CHECK: fir.has_value %[[RES]]
+! CHECK: }
diff --git a/flang/test/Lower/complex-real.f90 b/flang/test/Lower/complex-real.f90
index a28703db27bdc..d65abeedbca9d 100644
--- a/flang/test/Lower/complex-real.f90
+++ b/flang/test/Lower/complex-real.f90
@@ -1,13 +1,13 @@
-! 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: @_QPsb_complex_bfloat
! CHECK: %[[C_REF:.*]] = fir.alloca complex<bf16> {bindc_name = "c", uniq_name = "_QFsb_complex_bfloatEc"}
+! CHECK: %[[C_DECL:.*]]:2 = hlfir.declare %[[C_REF]] {uniq_name = "_QFsb_complex_bfloatEc"} : (!fir.ref<complex<bf16>>) -> (!fir.ref<complex<bf16>>, !fir.ref<complex<bf16>>)
! CHECK: %[[R_REF:.*]] = fir.alloca bf16 {bindc_name = "r", uniq_name = "_QFsb_complex_bfloatEr"}
-! CHECK: %[[R_VAL:.*]] = fir.load %[[R_REF]] : !fir.ref<bf16>
-! CHECK: %[[C0:.*]] = arith.constant 0 : i32
-! CHECK: %[[CREAL_REF:.*]] = fir.coordinate_of %[[C_REF]], %[[C0]] : (!fir.ref<complex<bf16>>, i32) -> !fir.ref<bf16>
-! CHECK: fir.store %[[R_VAL]] to %[[CREAL_REF]] : !fir.ref<bf16>
+! CHECK: %[[R_DECL:.*]]:2 = hlfir.declare %[[R_REF]] {uniq_name = "_QFsb_complex_bfloatEr"} : (!fir.ref<bf16>) -> (!fir.ref<bf16>, !fir.ref<bf16>)
+! CHECK: %[[R_VAL:.*]] = fir.load %[[R_DECL]]#0 : !fir.ref<bf16>
+! CHECK: %[[C_REAL:.*]] = hlfir.designate %[[C_DECL]]#0 real : (!fir.ref<complex<bf16>>) -> !fir.ref<bf16>
+! CHECK: hlfir.assign %[[R_VAL]] to %[[C_REAL]] : bf16, !fir.ref<bf16>
subroutine sb_complex_bfloat
complex(kind=3) :: c
real(kind=3) :: r
diff --git a/flang/test/Lower/computed-goto.f90 b/flang/test/Lower/computed-goto.f90
index bb24411bd11ea..5730a8b8aca1c 100644
--- a/flang/test/Lower/computed-goto.f90
+++ b/flang/test/Lower/computed-goto.f90
@@ -1,30 +1,32 @@
-! RUN: bbc -emit-fir -hlfir=false -o - %s | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir -o - %s | FileCheck %s
! CHECK-LABEL: func @_QPm
function m(index)
- ! CHECK: %[[V_0:[0-9]+]] = fir.alloca i32 {bindc_name = "m"
- ! CHECK: %[[V_1:[0-9]+]] = fir.load %arg0 : !fir.ref<i32>
+ ! CHECK: %[[INDEX_DECL:.*]]:2 = hlfir.declare %arg0
+ ! CHECK: %[[M_REF:.*]] = fir.alloca i32 {bindc_name = "m"
+ ! CHECK: %[[M_DECL:.*]]:2 = hlfir.declare %[[M_REF]]
+ ! CHECK: %[[V_1:[0-9]+]] = fir.load %[[INDEX_DECL]]#0 : !fir.ref<i32>
! CHECK: fir.select %[[V_1]] : i32 [1, ^bb6, 2, ^bb5, 3, ^bb4, 4, ^bb3, 5, ^bb2, unit, ^bb1]
! CHECK: ^bb1: // pred: ^bb0
- ! CHECK: fir.store %c0{{.*}} to %[[V_0]] : !fir.ref<i32>
+ ! CHECK: hlfir.assign %c0{{.*}} to %[[M_DECL]]#0 : i32, !fir.ref<i32>
! CHECK: cf.br ^bb7
! CHECK: ^bb2: // pred: ^bb0
- ! CHECK: fir.store %c1{{.*}} to %[[V_0]] : !fir.ref<i32>
+ ! CHECK: hlfir.assign %c1{{.*}} to %[[M_DECL]]#0 : i32, !fir.ref<i32>
! CHECK: cf.br ^bb7
! CHECK: ^bb3: // pred: ^bb0
- ! CHECK: fir.store %c3{{.*}} to %[[V_0]] : !fir.ref<i32>
+ ! CHECK: hlfir.assign %c3{{.*}} to %[[M_DECL]]#0 : i32, !fir.ref<i32>
! CHECK: cf.br ^bb7
! CHECK: ^bb4: // pred: ^bb0
- ! CHECK: fir.store %c5{{.*}} to %[[V_0]] : !fir.ref<i32>
+ ! CHECK: hlfir.assign %c5{{.*}} to %[[M_DECL]]#0 : i32, !fir.ref<i32>
! CHECK: cf.br ^bb7
! CHECK: ^bb5: // pred: ^bb0
- ! CHECK: fir.store %c7{{.*}} to %[[V_0]] : !fir.ref<i32>
+ ! CHECK: hlfir.assign %c7{{.*}} to %[[M_DECL]]#0 : i32, !fir.ref<i32>
! CHECK: cf.br ^bb7
! CHECK: ^bb6: // pred: ^bb0
- ! CHECK: fir.store %c9{{.*}} to %[[V_0]] : !fir.ref<i32>
+ ! CHECK: hlfir.assign %c9{{.*}} to %[[M_DECL]]#0 : i32, !fir.ref<i32>
! CHECK: cf.br ^bb7
! CHECK: ^bb7: // 6 preds: ^bb1, ^bb2, ^bb3, ^bb4, ^bb5, ^bb6
- ! CHECK: %[[V_2:[0-9]+]] = fir.load %[[V_0]] : !fir.ref<i32>
+ ! CHECK: %[[V_2:[0-9]+]] = fir.load %[[M_DECL]]#0 : !fir.ref<i32>
! CHECK: return %[[V_2]] : i32
goto (9,7,5,3,1) index ! + 1
m = 0; return
@@ -37,9 +39,11 @@ function m(index)
! CHECK-LABEL: func @_QPm1
function m1(index)
- ! CHECK: %[[V_0:[0-9]+]] = fir.alloca i32 {bindc_name = "m1"
+ ! CHECK: %[[INDEX_DECL:.*]]:2 = hlfir.declare %arg0
+ ! CHECK: %[[M_REF:.*]] = fir.alloca i32 {bindc_name = "m1"
+ ! CHECK: %[[M_DECL:.*]]:2 = hlfir.declare %[[M_REF]]
! CHECK: %[[V_1:[0-9]+]] = llvm.intr.stacksave : !llvm.ptr
- ! CHECK: %[[V_2:[0-9]+]] = fir.load %arg0 : !fir.ref<i32>
+ ! CHECK: %[[V_2:[0-9]+]] = fir.load %[[INDEX_DECL]]#0 : !fir.ref<i32>
! CHECK: %[[V_3:[0-9]+]] = arith.cmpi eq, %[[V_2]], %c1{{.*}} : i32
! CHECK: cf.cond_br %[[V_3]], ^bb1, ^bb2
! CHECK: ^bb1: // pred: ^bb0
@@ -47,13 +51,13 @@ function m1(index)
! CHECK: cf.br ^bb3
! CHECK: ^bb2: // pred: ^bb0
! CHECK: llvm.intr.stackrestore %[[V_1]] : !llvm.ptr
- ! CHECK: fir.store %c0{{.*}} to %[[V_0]] : !fir.ref<i32>
+ ! CHECK: hlfir.assign %c0{{.*}} to %[[M_DECL]]#0 : i32, !fir.ref<i32>
! CHECK: cf.br ^bb4
! CHECK: ^bb3: // pred: ^bb1
- ! CHECK: fir.store %c10{{.*}} to %[[V_0]] : !fir.ref<i32>
+ ! CHECK: hlfir.assign %c10{{.*}} to %[[M_DECL]]#0 : i32, !fir.ref<i32>
! CHECK: cf.br ^bb4
! CHECK: ^bb4: // 2 preds: ^bb2, ^bb3
- ! CHECK: %[[V_4:[0-9]+]] = fir.load %[[V_0]] : !fir.ref<i32>
+ ! CHECK: %[[V_4:[0-9]+]] = fir.load %[[M_DECL]]#0 : !fir.ref<i32>
! CHECK: return %[[V_4]] : i32
block
goto (10) index
@@ -64,9 +68,11 @@ function m1(index)
! CHECK-LABEL: func @_QPm2
function m2(index)
- ! CHECK: %[[V_0:[0-9]+]] = fir.alloca i32 {bindc_name = "m2"
+ ! CHECK: %[[INDEX_DECL:.*]]:2 = hlfir.declare %arg0
+ ! CHECK: %[[M_REF:.*]] = fir.alloca i32 {bindc_name = "m2"
+ ! CHECK: %[[M_DECL:.*]]:2 = hlfir.declare %[[M_REF]]
! CHECK: %[[V_1:[0-9]+]] = llvm.intr.stacksave : !llvm.ptr
- ! CHECK: %[[V_2:[0-9]+]] = fir.load %arg0 : !fir.ref<i32>
+ ! CHECK: %[[V_2:[0-9]+]] = fir.load %[[INDEX_DECL]]#0 : !fir.ref<i32>
! CHECK: %[[V_3:[0-9]+]] = arith.cmpi eq, %[[V_2]], %c1{{.*}} : i32
! CHECK: cf.cond_br %[[V_3]], ^bb1, ^bb2
! CHECK: ^bb1: // pred: ^bb0
@@ -80,16 +86,16 @@ function m2(index)
! CHECK: cf.br ^bb6
! CHECK: ^bb4: // pred: ^bb2
! CHECK: llvm.intr.stackrestore %[[V_1]] : !llvm.ptr
- ! CHECK: fir.store %c0{{.*}} to %[[V_0]] : !fir.ref<i32>
+ ! CHECK: hlfir.assign %c0{{.*}} to %[[M_DECL]]#0 : i32, !fir.ref<i32>
! CHECK: cf.br ^bb7
! CHECK: ^bb5: // pred: ^bb1
- ! CHECK: fir.store %c10{{.*}} to %[[V_0]] : !fir.ref<i32>
+ ! CHECK: hlfir.assign %c10{{.*}} to %[[M_DECL]]#0 : i32, !fir.ref<i32>
! CHECK: cf.br ^bb7
! CHECK: ^bb6: // pred: ^bb3
- ! CHECK: fir.store %c20{{.*}} to %[[V_0]] : !fir.ref<i32>
+ ! CHECK: hlfir.assign %c20{{.*}} to %[[M_DECL]]#0 : i32, !fir.ref<i32>
! CHECK: cf.br ^bb7
! CHECK: ^bb7: // 3 preds: ^bb4, ^bb5, ^bb6
- ! CHECK: %[[V_5:[0-9]+]] = fir.load %[[V_0]] : !fir.ref<i32>
+ ! CHECK: %[[V_5:[0-9]+]] = fir.load %[[M_DECL]]#0 : !fir.ref<i32>
! CHECK: return %[[V_5]] : i32
block
goto (10,20) index
@@ -101,9 +107,11 @@ function m2(index)
! CHECK-LABEL: func @_QPm3
function m3(index)
- ! CHECK: %[[V_0:[0-9]+]] = fir.alloca i32 {bindc_name = "m3"
+ ! CHECK: %[[INDEX_DECL:.*]]:2 = hlfir.declare %arg0
+ ! CHECK: %[[M_REF:.*]] = fir.alloca i32 {bindc_name = "m3"
+ ! CHECK: %[[M_DECL:.*]]:2 = hlfir.declare %[[M_REF]]
! CHECK: %[[V_1:[0-9]+]] = llvm.intr.stacksave : !llvm.ptr
- ! CHECK: %[[V_2:[0-9]+]] = fir.load %arg0 : !fir.ref<i32>
+ ! CHECK: %[[V_2:[0-9]+]] = fir.load %[[INDEX_DECL]]#0 : !fir.ref<i32>
! CHECK: %[[V_3:[0-9]+]] = arith.cmpi eq, %[[V_2]], %c1{{.*}} : i32
! CHECK: cf.cond_br %[[V_3]], ^bb1, ^bb2
! CHECK: ^bb1: // pred: ^bb0
@@ -123,19 +131,19 @@ function m3(index)
! CHECK: cf.br ^bb9
! CHECK: ^bb6: // pred: ^bb4
! CHECK: llvm.intr.stackrestore %[[V_1]] : !llvm.ptr
- ! CHECK: fir.store %c0{{.*}} to %[[V_0]] : !fir.ref<i32>
+ ! CHECK: hlfir.assign %c0{{.*}} to %[[M_DECL]]#0 : i32, !fir.ref<i32>
! CHECK: cf.br ^bb10
! CHECK: ^bb7: // pred: ^bb1
- ! CHECK: fir.store %c10{{.*}} to %[[V_0]] : !fir.ref<i32>
+ ! CHECK: hlfir.assign %c10{{.*}} to %[[M_DECL]]#0 : i32, !fir.ref<i32>
! CHECK: cf.br ^bb10
! CHECK: ^bb8: // pred: ^bb3
- ! CHECK: fir.store %c20{{.*}} to %[[V_0]] : !fir.ref<i32>
+ ! CHECK: hlfir.assign %c20{{.*}} to %[[M_DECL]]#0 : i32, !fir.ref<i32>
! CHECK: cf.br ^bb10
! CHECK: ^bb9: // pred: ^bb5
- ! CHECK: fir.store %c30{{.*}} to %[[V_0]] : !fir.ref<i32>
+ ! CHECK: hlfir.assign %c30{{.*}} to %[[M_DECL]]#0 : i32, !fir.ref<i32>
! CHECK: cf.br ^bb10
! CHECK: ^bb10: // 4 preds: ^bb6, ^bb7, ^bb8, ^bb9
- ! CHECK: %[[V_6:[0-9]+]] = fir.load %[[V_0]] : !fir.ref<i32>
+ ! CHECK: %[[V_6:[0-9]+]] = fir.load %[[M_DECL]]#0 : !fir.ref<i32>
! CHECK: return %[[V_6]] : i32
block
goto (10,20,30) index
diff --git a/flang/test/Lower/constant-literal-mangling.f90 b/flang/test/Lower/constant-literal-mangling.f90
index d02b5fd0a76c7..6ef1367369a30 100644
--- a/flang/test/Lower/constant-literal-mangling.f90
+++ b/flang/test/Lower/constant-literal-mangling.f90
@@ -1,5 +1,5 @@
! Test the names created for globals holding constant literal values
-! RUN: bbc -emit-fir -hlfir=false -o - %s | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir -o - %s | FileCheck %s
type someType
integer :: i
diff --git a/flang/test/Lower/control-flow.f90 b/flang/test/Lower/control-flow.f90
index b1929b03c87f9..960dca8c0ba0c 100644
--- a/flang/test/Lower/control-flow.f90
+++ b/flang/test/Lower/control-flow.f90
@@ -1,6 +1,6 @@
! Tests for control-flow
-! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s
+! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s
! check the lowering of a RETURN in the body of a SUBROUTINE
! CHECK-LABEL: one
More information about the flang-commits
mailing list