[flang-commits] [flang] [flang][NFC] Converted five tests from old lowering to new lowering (part 5) (PR #175008)
via flang-commits
flang-commits at lists.llvm.org
Thu Jan 8 07:56:46 PST 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-fir-hlfir
Author: Eugene Epshteyn (eugeneepshteyn)
<details>
<summary>Changes</summary>
Tests converted in Lower: array-elemental-subroutines.f90, array-expression-slice-1.f90, array-expression-slice-2.f90, array-expression-subscript.f90, array-substring.f90
---
Patch is 65.41 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/175008.diff
5 Files Affected:
- (modified) flang/test/Lower/array-elemental-subroutines.f90 (+14-28)
- (modified) flang/test/Lower/array-expression-slice-1.f90 (+41-363)
- (modified) flang/test/Lower/array-expression-slice-2.f90 (+23-8)
- (modified) flang/test/Lower/array-expression-subscript.f90 (+99-149)
- (modified) flang/test/Lower/array-substring.f90 (+20-39)
``````````diff
diff --git a/flang/test/Lower/array-elemental-subroutines.f90 b/flang/test/Lower/array-elemental-subroutines.f90
index b68d78fc3a800..5b524285f435c 100644
--- a/flang/test/Lower/array-elemental-subroutines.f90
+++ b/flang/test/Lower/array-elemental-subroutines.f90
@@ -1,34 +1,20 @@
! Test lowering of elemental subroutine calls with array arguments
-! RUN: bbc -o - -emit-fir -hlfir=false %s | FileCheck %s
+! RUN: bbc -emit-hlfir %s -o - | FileCheck %s
! CHECK-LABEL: func @_QPtest_elem_sub(
! CHECK-SAME: %[[VAL_0:.*]]: !fir.box<!fir.array<?xf32>>{{.*}}, %[[VAL_1:.*]]: !fir.box<!fir.array<?x!fir.char<1,?>>>{{.*}}, %[[VAL_2:.*]]: !fir.ref<i32>{{.*}}, %[[VAL_3:.*]]: !fir.ref<complex<f32>>{{.*}}) {
-! CHECK: %[[VAL_5:.*]] = arith.constant 0 : index
-! CHECK: %[[VAL_6:.*]]:3 = fir.box_dims %[[VAL_0]], %[[VAL_5]] : (!fir.box<!fir.array<?xf32>>, index) -> (index, index, index)
-! CHECK: %[[VAL_7:.*]] = arith.constant 10 : i64
-! CHECK: %[[VAL_8:.*]] = fir.convert %[[VAL_7]] : (i64) -> index
-! CHECK: %[[VAL_9:.*]] = arith.constant -1 : i64
-! CHECK: %[[VAL_10:.*]] = fir.convert %[[VAL_9]] : (i64) -> index
-! CHECK: %[[VAL_11:.*]] = arith.constant 1 : i64
-! CHECK: %[[VAL_12:.*]] = fir.convert %[[VAL_11]] : (i64) -> index
-! CHECK: %[[VAL_13:.*]] = fir.slice %[[VAL_8]], %[[VAL_12]], %[[VAL_10]] : (index, index, index) -> !fir.slice<1>
-! CHECK: %[[VAL_14:.*]] = fir.load %[[VAL_3]] : !fir.ref<complex<f32>>
-! CHECK: %[[VAL_15:.*]] = arith.constant 1 : index
-! CHECK: %[[VAL_16:.*]] = arith.constant 0 : index
-! CHECK: %[[VAL_17:.*]] = arith.subi %[[VAL_6]]#1, %[[VAL_15]] : index
-! CHECK: fir.do_loop %[[VAL_18:.*]] = %[[VAL_16]] to %[[VAL_17]] step %[[VAL_15]] {
-! CHECK: %[[VAL_19:.*]] = arith.constant 1 : index
-! CHECK: %[[VAL_20:.*]] = arith.addi %[[VAL_18]], %[[VAL_19]] : index
-! CHECK: %[[VAL_21:.*]] = fir.array_coor %[[VAL_0]] %[[VAL_20]] : (!fir.box<!fir.array<?xf32>>, index) -> !fir.ref<f32>
-! CHECK: %[[VAL_22:.*]] = arith.constant 1 : index
-! CHECK: %[[VAL_23:.*]] = arith.addi %[[VAL_18]], %[[VAL_22]] : index
-! CHECK: %[[VAL_24:.*]] = fir.array_coor %[[VAL_1]] {{\[}}%[[VAL_13]]] %[[VAL_23]] : (!fir.box<!fir.array<?x!fir.char<1,?>>>, !fir.slice<1>, index) -> !fir.ref<!fir.char<1,?>>
-! CHECK: %[[VAL_25:.*]] = fir.box_elesize %[[VAL_1]] : (!fir.box<!fir.array<?x!fir.char<1,?>>>) -> index
-! CHECK: %[[VAL_26:.*]] = fir.emboxchar %[[VAL_24]], %[[VAL_25]] : (!fir.ref<!fir.char<1,?>>, index) -> !fir.boxchar<1>
-! CHECK: fir.call @_QPfoo(%[[VAL_21]], %[[VAL_26]], %[[VAL_2]], %[[VAL_14]]) {{.*}}: (!fir.ref<f32>, !fir.boxchar<1>, !fir.ref<i32>, complex<f32>) -> ()
+! CHECK: %[[c_decl:.*]]:2 = hlfir.declare %[[VAL_1]]
+! CHECK: %[[i_decl:.*]]:2 = hlfir.declare %[[VAL_2]]
+! CHECK: %[[x_decl:.*]]:2 = hlfir.declare %[[VAL_0]]
+! CHECK: %[[z_decl:.*]]:2 = hlfir.declare %[[VAL_3]]
+! CHECK: %[[len:.*]] = fir.box_elesize %[[c_decl]]#1
+! CHECK: %[[slice:.*]] = hlfir.designate %[[c_decl]]#0 ({{.*}}) shape {{.*}} typeparams %[[len]]
+! CHECK: %[[z_val:.*]] = fir.load %[[z_decl]]#0
+! CHECK: fir.do_loop %[[arg:.*]] = {{.*}} {
+! CHECK: %[[x_elem:.*]] = hlfir.designate %[[x_decl]]#0 (%[[arg]])
+! CHECK: %[[c_elem:.*]] = hlfir.designate %[[slice]] (%[[arg]]) typeparams %[[len]]
+! CHECK: fir.call @_QPfoo(%[[x_elem]], %[[c_elem]], %[[i_decl]]#0, %[[z_val]])
! CHECK: }
-! CHECK: return
-! CHECK: }
subroutine test_elem_sub(x, c, i, z)
real :: x(:)
@@ -58,5 +44,5 @@ elemental subroutine bar(i, j)
end subroutine
end interface
call bar(i, j)
- ! CHECK: fir.call @_QPbar(%[[VAL_0]], %[[VAL_1]]) {{.*}}: (!fir.ref<i32>, !fir.ref<i32>) -> ()
-end subroutine
+ ! CHECK: fir.call @_QPbar(%{{.*}}, %{{.*}})
+end subroutine
\ No newline at end of file
diff --git a/flang/test/Lower/array-expression-slice-1.f90 b/flang/test/Lower/array-expression-slice-1.f90
index 73943137cb18d..a78b12e553ffa 100644
--- a/flang/test/Lower/array-expression-slice-1.f90
+++ b/flang/test/Lower/array-expression-slice-1.f90
@@ -1,345 +1,40 @@
-! RUN: bbc -hlfir=false -fwrapv -o - --outline-intrinsics %s | FileCheck %s
+! RUN: bbc -emit-hlfir -fwrapv -o - --outline-intrinsics %s | FileCheck %s
! CHECK-LABEL: func @_QQmain() attributes {fir.bindc_name = "P"} {
-! CHECK-DAG: %[[VAL_0:.*]] = arith.constant 10 : index
-! CHECK-DAG: %[[VAL_4:.*]] = arith.constant 2 : index
-! CHECK-DAG: %[[VAL_5:.*]] = arith.constant 1 : index
-! CHECK-DAG: %[[VAL_6:.*]] = arith.constant 0 : index
-! CHECK-DAG: %[[VAL_8:.*]] = arith.constant 8 : i64
-! CHECK-DAG: %[[VAL_11:.*]] = arith.constant 3 : index
-! CHECK-DAG: %[[VAL_13:.*]] = arith.constant 2 : i64
-! CHECK-DAG: %[[VAL_14:.*]] = arith.constant 7 : i64
-! CHECK-DAG: %[[VAL_16:.*]] = arith.constant 4 : i64
-! CHECK-DAG: %[[VAL_18:.*]] = arith.constant 6 : i32
-! CHECK-DAG: %[[VAL_19:.*]] = arith.constant 0 : i64
-! CHECK-DAG: %[[VAL_20:.*]] = arith.constant 1 : i64
-! CHECK-DAG: %[[VAL_21:.*]] = arith.constant 3 : i64
-! CHECK-DAG: %[[VAL_22:.*]] = arith.constant 4 : index
-! CHECK-DAG: %[[VAL_23:.*]] = arith.constant 1 : i32
-! CHECK-DAG: %[[VAL_24:.*]] = arith.constant 0 : i32
-! CHECK-DAG: %[[VAL_25:.*]] = fir.address_of(@_QFEa1) : !fir.ref<!fir.array<10x10xf32>>
-! CHECK-DAG: %[[VAL_26:.*]] = fir.alloca !fir.array<3xf32> {bindc_name = "a2", uniq_name = "_QFEa2"}
-! CHECK-DAG: %[[VAL_27:.*]] = fir.address_of(@_QFEa3) : !fir.ref<!fir.array<10xf32>>
-! CHECK-DAG: %[[VAL_28:.*]] = fir.alloca i32 {bindc_name = "i", uniq_name = "_QFEi"}
-! CHECK-DAG: %[[VAL_29:.*]] = fir.alloca !fir.array<3xi32> {bindc_name = "iv", uniq_name = "_QFEiv"}
-! CHECK-DAG: %[[VAL_30:.*]] = fir.alloca i32 {bindc_name = "j", uniq_name = "_QFEj"}
-! CHECK-DAG: %[[VAL_31:.*]] = fir.alloca i32 {bindc_name = "k", uniq_name = "_QFEk"}
-! CHECK: fir.store %[[VAL_24]] to %[[VAL_31]] : !fir.ref<i32>
-! CHECK: %[[STEP:.*]] = fir.convert %[[VAL_5]] : (index) -> i32
-! CHECK: br ^bb1(%[[STEP]], %[[VAL_0]] : i32, index)
-! CHECK: ^bb1(%[[VAL_32:.*]]: i32, %[[VAL_33:.*]]: index):
-! CHECK: %[[VAL_34:.*]] = arith.cmpi sgt, %[[VAL_33]], %[[VAL_6]] : index
-! CHECK: cond_br %[[VAL_34]], ^bb2, ^bb6
-! CHECK: ^bb2:
-! CHECK: fir.store %[[VAL_32]] to %[[VAL_30]] : !fir.ref<i32>
-! CHECK: br ^bb3(%[[STEP]], %[[VAL_0]] : i32, index)
-! CHECK: ^bb3(%[[VAL_36:.*]]: i32, %[[VAL_37:.*]]: index):
-! CHECK: %[[VAL_38:.*]] = arith.cmpi sgt, %[[VAL_37]], %[[VAL_6]] : index
-! CHECK: cond_br %[[VAL_38]], ^bb4, ^bb5
-! CHECK: ^bb4:
-! CHECK: fir.store %[[VAL_36]] to %[[VAL_28]] : !fir.ref<i32>
-! CHECK: %[[VAL_40:.*]] = fir.load %[[VAL_31]] : !fir.ref<i32>
-! CHECK: %[[VAL_41:.*]] = arith.addi %[[VAL_40]], %[[VAL_23]] : i32
-! CHECK: fir.store %[[VAL_41]] to %[[VAL_31]] : !fir.ref<i32>
-! CHECK: %[[VAL_42:.*]] = fir.load %[[VAL_31]] : !fir.ref<i32>
-! CHECK: %[[VAL_43:.*]] = fir.convert %[[VAL_42]] : (i32) -> f32
-! CHECK: %[[VAL_44:.*]] = fir.call @fir.cos.contract.f32.f32(%[[VAL_43]]) {{.*}}: (f32) -> f32
-! CHECK: %[[VAL_45:.*]] = fir.load %[[VAL_28]] : !fir.ref<i32>
-! CHECK: %[[VAL_46:.*]] = fir.convert %[[VAL_45]] : (i32) -> i64
-! CHECK: %[[VAL_47:.*]] = arith.subi %[[VAL_46]], %[[VAL_20]] : i64
-! CHECK: %[[VAL_48:.*]] = fir.load %[[VAL_30]] : !fir.ref<i32>
-! CHECK: %[[VAL_49:.*]] = fir.convert %[[VAL_48]] : (i32) -> i64
-! CHECK: %[[VAL_50:.*]] = arith.subi %[[VAL_49]], %[[VAL_20]] : i64
-! CHECK: %[[VAL_51:.*]] = fir.coordinate_of %[[VAL_25]], %[[VAL_47]], %[[VAL_50]] : (!fir.ref<!fir.array<10x10xf32>>, i64, i64) -> !fir.ref<f32>
-! CHECK: fir.store %[[VAL_44]] to %[[VAL_51]] : !fir.ref<f32>
-! CHECK: %[[LOADI:.*]] = fir.load %[[VAL_28]] : !fir.ref<i32>
-! CHECK: %[[VAL_52:.*]] = arith.addi %[[LOADI]], %[[STEP]] : i32
-! CHECK: %[[VAL_53:.*]] = arith.subi %[[VAL_37]], %[[VAL_5]] : index
-! CHECK: br ^bb3(%[[VAL_52]], %[[VAL_53]] : i32, index)
-! CHECK: ^bb5:
-! CHECK: fir.store %[[VAL_36]] to %[[VAL_28]] : !fir.ref<i32>
-! CHECK: %[[VAL_55:.*]] = fir.load %[[VAL_31]] : !fir.ref<i32>
-! CHECK: %[[VAL_56:.*]] = fir.convert %[[VAL_55]] : (i32) -> f32
-! CHECK: %[[VAL_57:.*]] = fir.call @fir.sin.contract.f32.f32(%[[VAL_56]]) {{.*}}: (f32) -> f32
-! CHECK: %[[VAL_58:.*]] = fir.load %[[VAL_30]] : !fir.ref<i32>
-! CHECK: %[[VAL_59:.*]] = fir.convert %[[VAL_58]] : (i32) -> i64
-! CHECK: %[[VAL_60:.*]] = arith.subi %[[VAL_59]], %[[VAL_20]] : i64
-! CHECK: %[[VAL_61:.*]] = fir.coordinate_of %[[VAL_27]], %[[VAL_60]] : (!fir.ref<!fir.array<10xf32>>, i64) -> !fir.ref<f32>
-! CHECK: fir.store %[[VAL_57]] to %[[VAL_61]] : !fir.ref<f32>
-! CHECK: %[[LOADJ:.*]] = fir.load %[[VAL_30]] : !fir.ref<i32>
-! CHECK: %[[VAL_62:.*]] = arith.addi %[[LOADJ]], %[[STEP]] : i32
-! CHECK: %[[VAL_63:.*]] = arith.subi %[[VAL_33]], %[[VAL_5]] : index
-! CHECK: br ^bb1(%[[VAL_62]], %[[VAL_63]] : i32, index)
-! CHECK: ^bb6:
-! CHECK: fir.store %[[VAL_32]] to %[[VAL_30]] : !fir.ref<i32>
-! CHECK: %[[VAL_65:.*]] = fir.shape %[[VAL_11]] : (index) -> !fir.shape<1>
-! CHECK: %[[VAL_66:.*]] = fir.undefined index
-! CHECK: %[[VAL_67:.*]] = fir.shape %[[VAL_0]], %[[VAL_0]] : (index, index) -> !fir.shape<2>
-! CHECK: %[[VAL_68:.*]] = fir.slice %[[VAL_16]], %[[VAL_66]], %[[VAL_66]], %[[VAL_4]], %[[VAL_0]], %[[VAL_11]] : (i64, index, index, index, index, index) -> !fir.slice<2>
-! CHECK: br ^bb7(%[[VAL_6]], %[[VAL_11]] : index, index)
-! CHECK: ^bb7(%[[VAL_69:.*]]: index, %[[VAL_70:.*]]: index):
-! CHECK: %[[VAL_71:.*]] = arith.cmpi sgt, %[[VAL_70]], %[[VAL_6]] : index
-! CHECK: cond_br %[[VAL_71]], ^bb8, ^bb9
-! CHECK: ^bb8:
-! CHECK: %[[VAL_72:.*]] = arith.addi %[[VAL_69]], %[[VAL_5]] : index
-! CHECK: %[[VAL_73:.*]] = fir.array_coor %[[VAL_25]](%[[VAL_67]]) {{\[}}%[[VAL_68]]] %[[VAL_22]], %[[VAL_72]] : (!fir.ref<!fir.array<10x10xf32>>, !fir.shape<2>, !fir.slice<2>, index, index) -> !fir.ref<f32>
-! CHECK: %[[VAL_74:.*]] = fir.load %[[VAL_73]] : !fir.ref<f32>
-! CHECK: %[[VAL_75:.*]] = fir.array_coor %[[VAL_26]](%[[VAL_65]]) %[[VAL_72]] : (!fir.ref<!fir.array<3xf32>>, !fir.shape<1>, index) -> !fir.ref<f32>
-! CHECK: fir.store %[[VAL_74]] to %[[VAL_75]] : !fir.ref<f32>
-! CHECK: %[[VAL_76:.*]] = arith.subi %[[VAL_70]], %[[VAL_5]] : index
-! CHECK: br ^bb7(%[[VAL_72]], %[[VAL_76]] : index, index)
-! CHECK: ^bb9:
-! CHECK: %[[VAL_77:.*]] = fir.coordinate_of %[[VAL_25]], %[[VAL_21]], %[[VAL_20]] : (!fir.ref<!fir.array<10x10xf32>>, i64, i64) -> !fir.ref<f32>
-! CHECK: %[[VAL_78:.*]] = fir.load %[[VAL_77]] : !fir.ref<f32>
-! CHECK: %[[VAL_79:.*]] = fir.coordinate_of %[[VAL_26]], %[[VAL_19]] : (!fir.ref<!fir.array<3xf32>>, i64) -> !fir.ref<f32>
-! CHECK: %[[VAL_80:.*]] = fir.load %[[VAL_79]] : !fir.ref<f32>
-! CHECK: %[[VAL_81:.*]] = arith.cmpf une, %[[VAL_78]], %[[VAL_80]] {{.*}} : f32
-! CHECK: cond_br %[[VAL_81]], ^bb10, ^bb11
-! CHECK: ^bb10:
-! CHECK: %[[VAL_82:.*]] = fir.address_of(@_QQclX{{.*}}) : !fir.ref<!fir.char<1,
-! CHECK: %[[VAL_83:.*]] = fir.convert %[[VAL_82]] : (!fir.ref<!fir.char<1,{{.*}}>>) -> !fir.ref<i8>
-! CHECK: %[[VAL_84:.*]] = fir.call @_FortranAioBeginExternalListOutput(%[[VAL_18]], %[[VAL_83]], %{{.*}}) {{.*}}: (i32, !fir.ref<i8>, i32) -> !fir.ref<i8>
-! CHECK: %[[VAL_85:.*]] = fir.address_of(@_QQclX6D69736D617463682031) : !fir.ref<!fir.char<1,10>>
-! CHECK: %[[VAL_86:.*]] = fir.convert %[[VAL_85]] : (!fir.ref<!fir.char<1,10>>) -> !fir.ref<i8>
-! CHECK: %[[VAL_87:.*]] = fir.convert %[[VAL_0]] : (index) -> i64
-! CHECK: %[[VAL_88:.*]] = fir.call @_FortranAioOutputAscii(%[[VAL_84]], %[[VAL_86]], %[[VAL_87]]) {{.*}}: (!fir.ref<i8>, !fir.ref<i8>, i64) -> i1
-! CHECK: %[[VAL_89:.*]] = fir.load %[[VAL_79]] : !fir.ref<f32>
-! CHECK: %[[VAL_90:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_84]], %[[VAL_89]]) {{.*}}: (!fir.ref<i8>, f32) -> i1
-! CHECK: %[[VAL_91:.*]] = fir.load %[[VAL_77]] : !fir.ref<f32>
-! CHECK: %[[VAL_92:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_84]], %[[VAL_91]]) {{.*}}: (!fir.ref<i8>, f32) -> i1
-! CHECK: %[[VAL_93:.*]] = fir.call @_FortranAioEndIoStatement(%[[VAL_84]]) {{.*}}: (!fir.ref<i8>) -> i32
-! CHECK: br ^bb11
-! CHECK: ^bb11:
-! CHECK: %[[VAL_94:.*]] = fir.coordinate_of %[[VAL_25]], %[[VAL_21]], %[[VAL_16]] : (!fir.ref<!fir.array<10x10xf32>>, i64, i64) -> !fir.ref<f32>
-! CHECK: %[[VAL_95:.*]] = fir.load %[[VAL_94]] : !fir.ref<f32>
-! CHECK: %[[VAL_96:.*]] = fir.coordinate_of %[[VAL_26]], %[[VAL_20]] : (!fir.ref<!fir.array<3xf32>>, i64) -> !fir.ref<f32>
-! CHECK: %[[VAL_97:.*]] = fir.load %[[VAL_96]] : !fir.ref<f32>
-! CHECK: %[[VAL_98:.*]] = arith.cmpf une, %[[VAL_95]], %[[VAL_97]] {{.*}} : f32
-! CHECK: cond_br %[[VAL_98]], ^bb12, ^bb13
-! CHECK: ^bb12:
-! CHECK: %[[VAL_99:.*]] = fir.address_of(@_QQclX{{.*}}) : !fir.ref<!fir.char<1,
-! CHECK: %[[VAL_100:.*]] = fir.convert %[[VAL_99]] : (!fir.ref<!fir.char<1,{{.*}}>>) -> !fir.ref<i8>
-! CHECK: %[[VAL_101:.*]] = fir.call @_FortranAioBeginExternalListOutput(%[[VAL_18]], %[[VAL_100]], %{{.*}}) {{.*}}: (i32, !fir.ref<i8>, i32) -> !fir.ref<i8>
-! CHECK: %[[VAL_102:.*]] = fir.address_of(@_QQclX6D69736D617463682032) : !fir.ref<!fir.char<1,10>>
-! CHECK: %[[VAL_103:.*]] = fir.convert %[[VAL_102]] : (!fir.ref<!fir.char<1,10>>) -> !fir.ref<i8>
-! CHECK: %[[VAL_104:.*]] = fir.convert %[[VAL_0]] : (index) -> i64
-! CHECK: %[[VAL_105:.*]] = fir.call @_FortranAioOutputAscii(%[[VAL_101]], %[[VAL_103]], %[[VAL_104]]) {{.*}}: (!fir.ref<i8>, !fir.ref<i8>, i64) -> i1
-! CHECK: %[[VAL_106:.*]] = fir.load %[[VAL_96]] : !fir.ref<f32>
-! CHECK: %[[VAL_107:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_101]], %[[VAL_106]]) {{.*}}: (!fir.ref<i8>, f32) -> i1
-! CHECK: %[[VAL_108:.*]] = fir.load %[[VAL_94]] : !fir.ref<f32>
-! CHECK: %[[VAL_109:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_101]], %[[VAL_108]]) {{.*}}: (!fir.ref<i8>, f32) -> i1
-! CHECK: %[[VAL_110:.*]] = fir.call @_FortranAioEndIoStatement(%[[VAL_101]]) {{.*}}: (!fir.ref<i8>) -> i32
-! CHECK: br ^bb13
-! CHECK: ^bb13:
-! CHECK: %[[VAL_111:.*]] = fir.coordinate_of %[[VAL_25]], %[[VAL_21]], %[[VAL_14]] : (!fir.ref<!fir.array<10x10xf32>>, i64, i64) -> !fir.ref<f32>
-! CHECK: %[[VAL_112:.*]] = fir.load %[[VAL_111]] : !fir.ref<f32>
-! CHECK: %[[VAL_113:.*]] = fir.coordinate_of %[[VAL_26]], %[[VAL_13]] : (!fir.ref<!fir.array<3xf32>>, i64) -> !fir.ref<f32>
-! CHECK: %[[VAL_114:.*]] = fir.load %[[VAL_113]] : !fir.ref<f32>
-! CHECK: %[[VAL_115:.*]] = arith.cmpf une, %[[VAL_112]], %[[VAL_114]] {{.*}} : f32
-! CHECK: cond_br %[[VAL_115]], ^bb14, ^bb15
-! CHECK: ^bb14:
-! CHECK: %[[VAL_116:.*]] = fir.address_of(@_QQclX{{.*}} : !fir.ref<!fir.char<1,
-! CHECK: %[[VAL_117:.*]] = fir.convert %[[VAL_116]] : (!fir.ref<!fir.char<1,{{.*}}>>) -> !fir.ref<i8>
-! CHECK: %[[VAL_118:.*]] = fir.call @_FortranAioBeginExternalListOutput(%[[VAL_18]], %[[VAL_117]], %{{.*}}) {{.*}}: (i32, !fir.ref<i8>, i32) -> !fir.ref<i8>
-! CHECK: %[[VAL_119:.*]] = fir.address_of(@_QQclX6D69736D617463682033) : !fir.ref<!fir.char<1,10>>
-! CHECK: %[[VAL_120:.*]] = fir.convert %[[VAL_119]] : (!fir.ref<!fir.char<1,10>>) -> !fir.ref<i8>
-! CHECK: %[[VAL_121:.*]] = fir.convert %[[VAL_0]] : (index) -> i64
-! CHECK: %[[VAL_122:.*]] = fir.call @_FortranAioOutputAscii(%[[VAL_118]], %[[VAL_120]], %[[VAL_121]]) {{.*}}: (!fir.ref<i8>, !fir.ref<i8>, i64) -> i1
-! CHECK: %[[VAL_123:.*]] = fir.load %[[VAL_113]] : !fir.ref<f32>
-! CHECK: %[[VAL_124:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_118]], %[[VAL_123]]) {{.*}}: (!fir.ref<i8>, f32) -> i1
-! CHECK: %[[VAL_125:.*]] = fir.load %[[VAL_111]] : !fir.ref<f32>
-! CHECK: %[[VAL_126:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_118]], %[[VAL_125]]) {{.*}}: (!fir.ref<i8>, f32) -> i1
-! CHECK: %[[VAL_127:.*]] = fir.call @_FortranAioEndIoStatement(%[[VAL_118]]) {{.*}}: (!fir.ref<i8>) -> i32
-! CHECK: br ^bb15
-! CHECK: ^bb15:
-! CHECK: %[[VAL_128:.*]] = fir.shape %[[VAL_0]] : (index) -> !fir.shape<1>
-! CHECK: %[[VAL_129:.*]] = fir.slice %[[VAL_5]], %[[VAL_0]], %[[VAL_22]] : (index, index, index) -> !fir.slice<1>
-! CHECK: br ^bb16(%[[VAL_6]], %[[VAL_11]] : index, index)
-! CHECK: ^bb16(%[[VAL_130:.*]]: index, %[[VAL_131:.*]]: index):
-! CHECK: %[[VAL_132:.*]] = arith.cmpi sgt, %[[VAL_131]], %[[VAL_6]] : index
-! CHECK: cond_br %[[VAL_132]], ^bb17, ^bb18
-! CHECK: ^bb17:
-! CHECK: %[[VAL_133:.*]] = arith.addi %[[VAL_130]], %[[VAL_5]] : index
-! CHECK: %[[VAL_134:.*]] = fir.array_coor %[[VAL_26]](%[[VAL_65]]) %[[VAL_133]] : (!fir.ref<!fir.array<3xf32>>, !fir.shape<1>, index) -> !fir.ref<f32>
-! CHECK: %[[VAL_135:.*]] = fir.load %[[VAL_134]] : !fir.ref<f32>
-! CHECK: %[[VAL_136:.*]] = fir.array_coor %[[VAL_27]](%[[VAL_128]]) {{\[}}%[[VAL_129]]] %[[VAL_133]] : (!fir.ref<!fir.array<10xf32>>, !fir.shape<1>, !fir.slice<1>, index) -> !fir.ref<f32>
-! CHECK: fir.store %[[VAL_135]] to %[[VAL_136]] : !fir.ref<f32>
-! CHECK: %[[VAL_137:.*]] = arith.subi %[[VAL_131]], %[[VAL_5]] : index
-! CHECK: br ^bb16(%[[VAL_133]], %[[VAL_137]] : index, index)
-! CHECK: ^bb18:
-! CHECK: %[[VAL_138:.*]] = fir.load %[[VAL_77]] : !fir.ref<f32>
-! CHECK: %[[VAL_139:.*]] = fir.coordinate_of %[[VAL_27]], %[[VAL_19]] : (!fir.ref<!fir.array<10xf32>>, i64) -> !fir.ref<f32>
-! CHECK: %[[VAL_140:.*]] = fir.load %[[VAL_139]] : !fir.ref<f32>
-! CHECK: %[[VAL_141:.*]] = arith.cmpf une, %[[VAL_138]], %[[VAL_140]] {{.*}} : f32
-! CHECK: cond_br %[[VAL_141]], ^bb19, ^bb20
-! CHECK: ^bb19:
-! CHECK: %[[VAL_142:.*]] = fir.address_of(@_QQclX{{.*}}) : !fir.ref<!fir.char<1,
-! CHECK: %[[VAL_143:.*]] = fir.convert %[[VAL_142]] : (!fir.ref<!fir.char<1,{{.*}}>>) -> !fir.ref<i8>
-! CHECK: %[[VAL_144:.*]] = fir.call @_FortranAioBeginExternalListOutput(%[[VAL_18]], %[[VAL_143]], %{{.*}}) {{.*}}: (i32, !fir.ref<i8>, i32) -> !fir.ref<i8>
-! CHECK: %[[VAL_145:.*]] = fir.address_of(@_QQclX6D69736D617463682034) : !fir.ref<!fir.char<1,10>>
-! CHECK: %[[VAL_146:.*]] = fir.convert %[[VAL_145]] : (!fir.ref<!fir.char<1,10>>) -> !fir.ref<i8>
-! CHECK: %[[VAL_147:.*]] = fir.convert %[[VAL_0]] : (index) -> i64
-! CHECK: %[[VAL_148:.*]] = fir.call @_FortranAioOutputAscii(%[[VAL_144]], %[[VAL_146]], %[[VAL_147]]) {{.*}}: (!fir.ref<i8>, !fir.ref<i8>, i64) -> i1
-! CHECK: %[[VAL_149:.*]] = fir.load %[[VAL_77]] : !fir.ref<f32>
-! CHECK: %[[VAL_150:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_144]], %[[VAL_149]]) {{.*}}: (!fir.ref<i8>, f32) -> i1
-! CHECK: %[[VAL_151:.*]] = fir.load %[[VAL_139]] : !fir.ref<f32>
-! CHECK: %[[VAL_152:.*]] = fir.call @_FortranAioOutputReal32(%[[VAL_144]], %[[VAL_151]]) {{.*}}: (!fir.ref<i8>, f32) -> i1
-! CHECK: %[[VAL_153:.*]] = fir.call @_FortranAioEndIoStatement(%[[VAL_144]]) {{.*}}: (!fir.ref<i8>) -> i32
-! CHECK: br ^bb20
-! CHECK: ^bb20:
-! CHECK: %[[VAL_154:.*]] = fir.load %[[VAL_94]] : !fir.ref<f32>
-! CHECK: %[[VAL_155:.*]] = fir.coordinate_of %[[VAL_27]], %[[VAL_16]] : (!fir.ref<!fir.array<10xf32>>, i64) -> !fir.ref<f32>
-! CHECK: %[[VAL_156:.*]] = fir.load %[[VAL_155]] : !fir.ref<f32>
-! CH...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/175008
More information about the flang-commits
mailing list