[flang-commits] [flang] [flang][NFC] Convert problematic legacy-lowering tests to HLFIR (part 56) (PR #195578)

Eugene Epshteyn via flang-commits flang-commits at lists.llvm.org
Mon May 4 05:50:50 PDT 2026


================
@@ -55,49 +55,18 @@ subroutine select_type1(a)
   end subroutine
 
 ! CHECK-LABEL: func.func @_QMselect_type_lower_testPselect_type1(
-! CHECK-SAME: %[[ARG0:.*]]: !fir.class<!fir.type<_QMselect_type_lower_testTp1{a:i32,b:i32}>> {fir.bindc_name = "a"})
-
-! CHECK: fir.select_type %[[ARG0]] : !fir.class<!fir.type<_QMselect_type_lower_testTp1{a:i32,b:i32}>>
-! CHECK-SAME: [#fir.type_is<!fir.type<_QMselect_type_lower_testTp1{a:i32,b:i32}>>, ^[[TYPE_IS_BLK:.*]], #fir.class_is<!fir.type<_QMselect_type_lower_testTp1{a:i32,b:i32}>>, ^[[CLASS_IS_P1_BLK:.*]], #fir.class_is<!fir.type<_QMselect_type_lower_testTp2{a:i32,b:i32,c:i32}>>, ^[[CLASS_IS_P2_BLK:.*]], unit, ^[[DEFAULT_BLOCK:.*]]]
-! CHECK: ^[[TYPE_IS_BLK]]
-! CHECK: ^[[CLASS_IS_P1_BLK]]
-! CHECK: ^[[CLASS_IS_P2_BLK]]
-! CHECK: %[[P2:.*]] = fir.convert %[[ARG0:.*]] : (!fir.class<!fir.type<_QMselect_type_lower_testTp1{a:i32,b:i32}>>) -> !fir.class<!fir.type<_QMselect_type_lower_testTp2{a:i32,b:i32,c:i32}>>
-! CHECK: %{{.*}} = fir.coordinate_of %[[P2]], c : (!fir.class<!fir.type<_QMselect_type_lower_testTp2{a:i32,b:i32,c:i32}>>) -> !fir.ref<i32>
-! CHECK: ^[[DEFAULT_BLOCK]]
+! CHECK-SAME: %[[ARG0:.*]]: !fir.class<!fir.type<_QMselect_type_lower_testTp1
+! CHECK: %[[ADECL:.*]]:2 = hlfir.declare %[[ARG0]]{{.*}}{{{.*}}uniq_name = "_QMselect_type_lower_testFselect_type1Ea"}
+! CHECK: fir.select_type %[[ADECL]]#1
+! CHECK-SAME: #fir.type_is<!fir.type<_QMselect_type_lower_testTp1
+! CHECK-SAME: #fir.class_is<!fir.type<_QMselect_type_lower_testTp1
+! CHECK-SAME: #fir.class_is<!fir.type<_QMselect_type_lower_testTp2
 
 ! CFG-LABEL: func.func @_QMselect_type_lower_testPselect_type1(
-! CFG-SAME: %[[ARG0:.*]]: !fir.class<!fir.type<_QMselect_type_lower_testTp1{a:i32,b:i32}>> {fir.bindc_name = "a"}) {
-! CFG:      %[[TDESC_P1_ADDR:.*]] = fir.type_desc !fir.type<_QMselect_type_lower_testTp1{a:i32,b:i32}>
-! CFG:      %[[BOX_TDESC:.*]] = fir.box_tdesc %[[ARG0]] : (!fir.class<!fir.type<_QMselect_type_lower_testTp1{a:i32,b:i32}>>) -> !fir.tdesc<!fir.type<_QMselect_type_lower_testTp1{a:i32,b:i32}>>
-! CFG:      %[[TDESC_P1_CONV:.*]] = fir.convert %[[TDESC_P1_ADDR]] : (!fir.tdesc<!fir.type<_QMselect_type_lower_testTp1{a:i32,b:i32}>>) -> index
-! CFG:      %[[BOX_TDESC_CONV:.*]] = fir.convert %[[BOX_TDESC]] : (!fir.tdesc<!fir.type<_QMselect_type_lower_testTp1{a:i32,b:i32}>>) -> index
-! CFG:      %[[TDESC_CMP:.*]] = arith.cmpi eq, %[[TDESC_P1_CONV]], %[[BOX_TDESC_CONV]] : index
-! CFG:      cf.cond_br %[[TDESC_CMP]], ^[[TYPE_IS_P1_BLK:.*]], ^[[NOT_TYPE_IS_P1_BLK:.*]]
-! CFG:    ^[[NOT_TYPE_IS_P1_BLK]]:
-! CFG:      %[[TDESC_P2_ADDR:.*]] = fir.type_desc !fir.type<_QMselect_type_lower_testTp2{{.*}}
-! CFG:      %[[TDESC_P2_CONV:.*]] = fir.convert %[[TDESC_P2_ADDR]] : (!fir.tdesc<{{.*}}>) -> !fir.ref<none>
-! CFG:      %[[BOX_NONE:.*]] = fir.convert %[[ARG0]] : (!fir.class<!fir.type<_QMselect_type_lower_testTp1{a:i32,b:i32}>>) -> !fir.box<none>
-! CFG:      %[[CLASS_IS:.*]] = fir.call @_FortranAClassIs(%[[BOX_NONE]], %[[TDESC_P2_CONV]]) : (!fir.box<none>, !fir.ref<none>) -> i1
-! CFG:      cf.cond_br %[[CLASS_IS]], ^bb[[CLASS_IS_P2_BLK:.*]], ^[[NOT_CLASS_IS_P2_BLK:.*]]
-! CFG:    ^[[TYPE_IS_P1_BLK]]:
-! CFG:      cf.br ^bb[[EXIT_SELECT_BLK:[0-9]]]
-! CFG:    ^bb[[NOT_CLASS_IS_P1_BLK:[0-9]]]:
-! CFG:      cf.br ^bb[[DEFAULT_BLK:[0-9]]]
-! CFG:    ^bb[[CLASS_IS_P1_BLK:[0-9]]]:
-! CFG:      cf.br ^[[END_SELECT_BLK:.*]]
-! CFG:    ^[[NOT_CLASS_IS_P2_BLK]]:
----------------
eugeneepshteyn wrote:

Thank you for pointing it out. I'll have to change my approach here. I think I'll revert select-type.f90 changes in this PR and do it as a separate PR.

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


More information about the flang-commits mailing list