brintos

brintos / llvm-project-archived public Read only

0
0
Text · 21.9 KiB · 82e1de1 Raw
320 lines · plain
1! RUN: bbc -emit-hlfir -I nw %s -o - | FileCheck %s2 3module components_test4  type t15     integer :: i(6)6     real :: r(5)7  end type t18 9  type t210     type(t1) :: g1(3,3), g2(4,4,4)11     integer :: g3(5)12  end type t213 14  type t315     type(t1) :: h1(3)16     type(t2) :: h2(4)17  end type t318 19  type(t3) :: instance20 21contains22 23  subroutine s1(i,j)24     i = instance%h2(2)%g2(1,2,3)%i(j)25  end subroutine s126! CHECK-LABEL:   func.func @_QMcomponents_testPs1(27! CHECK-SAME:                                     %[[VAL_0:.*]]: !fir.ref<i32> {fir.bindc_name = "i"},28! CHECK-SAME:                                     %[[VAL_1:.*]]: !fir.ref<i32> {fir.bindc_name = "j"}) {29! CHECK:           %[[VAL_2:.*]] = fir.dummy_scope : !fir.dscope30! CHECK:           %[[VAL_3:.*]] = fir.address_of(@_QMcomponents_testEinstance) : !fir.ref<!fir.type<_QMcomponents_testTt331! CHECK:           %[[VAL_4:.*]]:2 = hlfir.declare %[[VAL_3]] {uniq_name = "_QMcomponents_testEinstance"} : (!fir.ref<!fir.type<_QMcomponents_testTt332! CHECK:           %[[VAL_5:.*]]:2 = hlfir.declare %[[VAL_0]] dummy_scope %[[VAL_2]] arg {{[0-9]+}} {uniq_name = "_QMcomponents_testFs1Ei"} : (!fir.ref<i32>, !fir.dscope) -> (!fir.ref<i32>, !fir.ref<i32>)33! CHECK:           %[[VAL_6:.*]]:2 = hlfir.declare %[[VAL_1]] dummy_scope %[[VAL_2]] arg {{[0-9]+}} {uniq_name = "_QMcomponents_testFs1Ej"} : (!fir.ref<i32>, !fir.dscope) -> (!fir.ref<i32>, !fir.ref<i32>)34! CHECK:           %[[VAL_7:.*]] = arith.constant 4 : index35! CHECK:           %[[VAL_8:.*]] = fir.shape %[[VAL_7]] : (index) -> !fir.shape<1>36! CHECK:           %[[VAL_9:.*]] = arith.constant 2 : index37! CHECK:           %[[VAL_10:.*]] = hlfir.designate %[[VAL_4]]#0{"h2"} <%[[VAL_8]]> (%[[VAL_9]])  : (!fir.ref<!fir.type<_QMcomponents_testTt338! CHECK:           %[[VAL_11:.*]] = arith.constant 4 : index39! CHECK:           %[[VAL_12:.*]] = arith.constant 4 : index40! CHECK:           %[[VAL_13:.*]] = arith.constant 4 : index41! CHECK:           %[[VAL_14:.*]] = fir.shape %[[VAL_11]], %[[VAL_12]], %[[VAL_13]] : (index, index, index) -> !fir.shape<3>42! CHECK:           %[[VAL_15:.*]] = arith.constant 1 : index43! CHECK:           %[[VAL_16:.*]] = arith.constant 2 : index44! CHECK:           %[[VAL_17:.*]] = arith.constant 3 : index45! CHECK:           %[[VAL_18:.*]] = hlfir.designate %[[VAL_10]]{"g2"} <%[[VAL_14]]> (%[[VAL_15]], %[[VAL_16]], %[[VAL_17]])  : (!fir.ref<!fir.type<_QMcomponents_testTt246! CHECK:           %[[VAL_19:.*]] = arith.constant 6 : index47! CHECK:           %[[VAL_20:.*]] = fir.shape %[[VAL_19]] : (index) -> !fir.shape<1>48! CHECK:           %[[VAL_21:.*]] = fir.load %[[VAL_6]]#0 : !fir.ref<i32>49! CHECK:           %[[VAL_22:.*]] = fir.convert %[[VAL_21]] : (i32) -> i6450! CHECK:           %[[VAL_23:.*]] = hlfir.designate %[[VAL_18]]{"i"} <%[[VAL_20]]> (%[[VAL_22]])  : (!fir.ref<!fir.type<_QMcomponents_testTt151! CHECK:           %[[VAL_24:.*]] = fir.load %[[VAL_23]] : !fir.ref<i32>52! CHECK:           hlfir.assign %[[VAL_24]] to %[[VAL_5]]#0 : i32, !fir.ref<i32>53! CHECK:           return54! CHECK:         }55 56end module components_test57 58 59subroutine sliced_base()60  interface61    subroutine takes_int_array(i)62      integer :: i(:)63    end subroutine64  end interface65  type t66    real :: x67    integer :: y68  end type69  type(t) :: a(100)70  a(1:50)%y = 4271  call takes_int_array(a(1:50)%y)72end subroutine73! CHECK-LABEL:   func.func @_QPsliced_base() {74! CHECK:           %[[VAL_0:.*]] = arith.constant 100 : index75! CHECK:           %[[VAL_1:.*]] = fir.alloca !fir.array<100x!fir.type<_QFsliced_baseTt76! CHECK:           %[[VAL_2:.*]] = fir.shape %[[VAL_0]] : (index) -> !fir.shape<1>77! CHECK:           %[[VAL_3:.*]]:2 = hlfir.declare %[[VAL_1]](%[[VAL_2]]) {uniq_name = "_QFsliced_baseEa"} : (!fir.ref<!fir.array<100x!fir.type<_QFsliced_baseTt78! CHECK:           %[[VAL_4:.*]] = arith.constant 42 : i3279! CHECK:           %[[VAL_5:.*]] = arith.constant 1 : index80! CHECK:           %[[VAL_6:.*]] = arith.constant 50 : index81! CHECK:           %[[VAL_7:.*]] = arith.constant 1 : index82! CHECK:           %[[VAL_8:.*]] = arith.constant 50 : index83! CHECK:           %[[VAL_9:.*]] = fir.shape %[[VAL_8]] : (index) -> !fir.shape<1>84! CHECK:           %[[VAL_10:.*]] = hlfir.designate %[[VAL_3]]#0 (%[[VAL_5]]:%[[VAL_6]]:%[[VAL_7]])  shape %[[VAL_9]] : (!fir.ref<!fir.array<100x!fir.type<_QFsliced_baseTt85! CHECK:           %[[VAL_11:.*]] = hlfir.designate %[[VAL_10]]{"y"}   shape %[[VAL_9]] : (!fir.ref<!fir.array<50x!fir.type<_QFsliced_baseTt86! CHECK:           hlfir.assign %[[VAL_4]] to %[[VAL_11]] : i32, !fir.box<!fir.array<50xi32>>87! CHECK:           %[[VAL_12:.*]] = arith.constant 1 : index88! CHECK:           %[[VAL_13:.*]] = arith.constant 50 : index89! CHECK:           %[[VAL_14:.*]] = arith.constant 1 : index90! CHECK:           %[[VAL_15:.*]] = arith.constant 50 : index91! CHECK:           %[[VAL_16:.*]] = fir.shape %[[VAL_15]] : (index) -> !fir.shape<1>92! CHECK:           %[[VAL_17:.*]] = hlfir.designate %[[VAL_3]]#0 (%[[VAL_12]]:%[[VAL_13]]:%[[VAL_14]])  shape %[[VAL_16]] : (!fir.ref<!fir.array<100x!fir.type<_QFsliced_baseTt93! CHECK:           %[[VAL_18:.*]] = hlfir.designate %[[VAL_17]]{"y"}   shape %[[VAL_16]] : (!fir.ref<!fir.array<50x!fir.type<_QFsliced_baseTt94! CHECK:           %[[VAL_19:.*]] = fir.convert %[[VAL_18]] : (!fir.box<!fir.array<50xi32>>) -> !fir.box<!fir.array<?xi32>>95! CHECK:           fir.call @_QPtakes_int_array(%[[VAL_19]]) fastmath<contract> : (!fir.box<!fir.array<?xi32>>) -> ()96! CHECK:           return97! CHECK:         }98 99subroutine issue772(a, x)100  ! Verify that sub-expressions inside a component reference are101  ! only evaluated once.102  type t103    real :: b(100)104  end type105  real :: x(100)106  type(t) :: a(100)107  x = a(ifoo())%b(1:100:1)108  print *, a(20)%b(1:ibar():1)109end subroutine110! CHECK-LABEL:   func.func @_QPissue772(111! CHECK: fir.call @_QPifoo()112! CHECK-NOT: fir.call @_QPifoo()113! CHECK: fir.call @_QPibar()114! CHECK-NOT: fir.call @_QPibar()115! CHECK: return116 117! -----------------------------------------------------------------------------118!     Test array%character array sections119! -----------------------------------------------------------------------------120 121subroutine lhs_char_section(a)122  type t123   character(5) :: c124  end type125  type(t) :: a(10)126  a%c = "hello"127end subroutine128! CHECK-LABEL:   func.func @_QPlhs_char_section(129! CHECK-SAME:                                   %[[VAL_0:.*]]: !fir.ref<!fir.array<10x!fir.type<_QFlhs_char_sectionTt130! CHECK:           %[[VAL_1:.*]] = fir.dummy_scope : !fir.dscope131! CHECK:           %[[VAL_2:.*]] = arith.constant 10 : index132! CHECK:           %[[VAL_3:.*]] = fir.shape %[[VAL_2]] : (index) -> !fir.shape<1>133! CHECK:           %[[VAL_4:.*]]:2 = hlfir.declare %[[VAL_0]](%[[VAL_3]]) dummy_scope %[[VAL_1]] arg {{[0-9]+}} {uniq_name = "_QFlhs_char_sectionEa"} : (!fir.ref<!fir.array<10x!fir.type<_QFlhs_char_sectionTt134! CHECK:           %[[VAL_5:.*]] = fir.address_of(@_QQclX68656C6C6F) : !fir.ref<!fir.char<1,5>>135! CHECK:           %[[VAL_6:.*]] = arith.constant 5 : index136! CHECK:           %[[VAL_7:.*]]:2 = hlfir.declare %[[VAL_5]] typeparams %[[VAL_6]] {fortran_attrs = #fir.var_attrs<parameter>, uniq_name = "_QQclX68656C6C6F"} : (!fir.ref<!fir.char<1,5>>, index) -> (!fir.ref<!fir.char<1,5>>, !fir.ref<!fir.char<1,5>>)137! CHECK:           %[[VAL_8:.*]] = arith.constant 5 : index138! CHECK:           %[[VAL_9:.*]] = hlfir.designate %[[VAL_4]]#0{"c"}   shape %[[VAL_3]] typeparams %[[VAL_8]] : (!fir.ref<!fir.array<10x!fir.type<_QFlhs_char_sectionTt139! CHECK:           hlfir.assign %[[VAL_7]]#0 to %[[VAL_9]] : !fir.ref<!fir.char<1,5>>, !fir.ref<!fir.array<10x!fir.char<1,5>>>140! CHECK:           return141! CHECK:         }142 143subroutine rhs_char_section(a, c)144  type t145   character(10) :: c146  end type147  type(t) :: a(10)148  character(10) :: c(10)149  c = a%c150end subroutine151! CHECK-LABEL:   func.func @_QPrhs_char_section(152! CHECK-SAME:                                   %[[VAL_0:.*]]: !fir.ref<!fir.array<10x!fir.type<_QFrhs_char_sectionTt153! CHECK-SAME:                                   %[[VAL_1:.*]]: !fir.boxchar<1> {fir.bindc_name = "c"}) {154! CHECK:           %[[VAL_2:.*]] = fir.dummy_scope : !fir.dscope155! CHECK:           %[[VAL_3:.*]] = arith.constant 10 : index156! CHECK:           %[[VAL_4:.*]] = fir.shape %[[VAL_3]] : (index) -> !fir.shape<1>157! CHECK:           %[[VAL_5:.*]]:2 = hlfir.declare %[[VAL_0]](%[[VAL_4]]) dummy_scope %[[VAL_2]] arg {{[0-9]+}} {uniq_name = "_QFrhs_char_sectionEa"} : (!fir.ref<!fir.array<10x!fir.type<_QFrhs_char_sectionTt158! CHECK:           %[[VAL_6:.*]]:2 = fir.unboxchar %[[VAL_1]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)159! CHECK:           %[[VAL_7:.*]] = fir.convert %[[VAL_6]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.array<10x!fir.char<1,10>>>160! CHECK:           %[[VAL_8:.*]] = arith.constant 10 : index161! CHECK:           %[[VAL_9:.*]] = arith.constant 10 : index162! CHECK:           %[[VAL_10:.*]] = fir.shape %[[VAL_9]] : (index) -> !fir.shape<1>163! CHECK:           %[[VAL_11:.*]]:2 = hlfir.declare %[[VAL_7]](%[[VAL_10]]) typeparams %[[VAL_8]] dummy_scope %[[VAL_2]] arg {{[0-9]+}} {uniq_name = "_QFrhs_char_sectionEc"} : (!fir.ref<!fir.array<10x!fir.char<1,10>>>, !fir.shape<1>, index, !fir.dscope) -> (!fir.ref<!fir.array<10x!fir.char<1,10>>>, !fir.ref<!fir.array<10x!fir.char<1,10>>>)164! CHECK:           %[[VAL_12:.*]] = arith.constant 10 : index165! CHECK:           %[[VAL_13:.*]] = hlfir.designate %[[VAL_5]]#0{"c"}   shape %[[VAL_4]] typeparams %[[VAL_12]] : (!fir.ref<!fir.array<10x!fir.type<_QFrhs_char_sectionTt166! CHECK:           hlfir.assign %[[VAL_13]] to %[[VAL_11]]#0 : !fir.ref<!fir.array<10x!fir.char<1,10>>>, !fir.ref<!fir.array<10x!fir.char<1,10>>>167! CHECK:           return168! CHECK:         }169 170subroutine elemental_char_section(a, i)171  type t172   character(10) :: c173  end type174  type(t) :: a(10)175  integer :: i(10)176  i = scan(a%c, "hello")177end subroutine178! CHECK-LABEL:   func.func @_QPelemental_char_section(179! CHECK-SAME:                                         %[[VAL_0:.*]]: !fir.ref<!fir.array<10x!fir.type<_QFelemental_char_sectionTt180! CHECK-SAME:                                         %[[VAL_1:.*]]: !fir.ref<!fir.array<10xi32>> {fir.bindc_name = "i"}) {181! CHECK:           %[[VAL_2:.*]] = fir.dummy_scope : !fir.dscope182! CHECK:           %[[VAL_3:.*]] = arith.constant 10 : index183! CHECK:           %[[VAL_4:.*]] = fir.shape %[[VAL_3]] : (index) -> !fir.shape<1>184! CHECK:           %[[VAL_5:.*]]:2 = hlfir.declare %[[VAL_0]](%[[VAL_4]]) dummy_scope %[[VAL_2]] arg {{[0-9]+}} {uniq_name = "_QFelemental_char_sectionEa"} : (!fir.ref<!fir.array<10x!fir.type<_QFelemental_char_sectionTt185! CHECK:           %[[VAL_6:.*]] = arith.constant 10 : index186! CHECK:           %[[VAL_7:.*]] = fir.shape %[[VAL_6]] : (index) -> !fir.shape<1>187! CHECK:           %[[VAL_8:.*]]:2 = hlfir.declare %[[VAL_1]](%[[VAL_7]]) dummy_scope %[[VAL_2]] arg {{[0-9]+}} {uniq_name = "_QFelemental_char_sectionEi"} : (!fir.ref<!fir.array<10xi32>>, !fir.shape<1>, !fir.dscope) -> (!fir.ref<!fir.array<10xi32>>, !fir.ref<!fir.array<10xi32>>)188! CHECK:           %[[VAL_9:.*]] = arith.constant 10 : index189! CHECK:           %[[VAL_10:.*]] = hlfir.designate %[[VAL_5]]#0{"c"}   shape %[[VAL_4]] typeparams %[[VAL_9]] : (!fir.ref<!fir.array<10x!fir.type<_QFelemental_char_sectionTt190! CHECK:           %[[VAL_11:.*]] = fir.address_of(@_QQclX68656C6C6F) : !fir.ref<!fir.char<1,5>>191! CHECK:           %[[VAL_12:.*]] = arith.constant 5 : index192! CHECK:           %[[VAL_13:.*]]:2 = hlfir.declare %[[VAL_11]] typeparams %[[VAL_12]] {fortran_attrs = #fir.var_attrs<parameter>, uniq_name = "_QQclX68656C6C6F"} : (!fir.ref<!fir.char<1,5>>, index) -> (!fir.ref<!fir.char<1,5>>, !fir.ref<!fir.char<1,5>>)193! CHECK:           %[[VAL_14:.*]] = hlfir.elemental %[[VAL_4]] unordered : (!fir.shape<1>) -> !hlfir.expr<10xi32> {194! CHECK:           ^bb0(%[[VAL_15:.*]]: index):195! CHECK:             %[[VAL_16:.*]] = hlfir.designate %[[VAL_10]] (%[[VAL_15]])  typeparams %[[VAL_9]] : (!fir.ref<!fir.array<10x!fir.char<1,10>>>, index, index) -> !fir.ref<!fir.char<1,10>>196! CHECK:             %[[VAL_17:.*]] = arith.constant false197! CHECK:             %[[VAL_18:.*]] = fir.convert %[[VAL_16]] : (!fir.ref<!fir.char<1,10>>) -> !fir.ref<i8>198! CHECK:             %[[VAL_19:.*]] = fir.convert %[[VAL_9]] : (index) -> i64199! CHECK:             %[[VAL_20:.*]] = fir.convert %[[VAL_13]]#0 : (!fir.ref<!fir.char<1,5>>) -> !fir.ref<i8>200! CHECK:             %[[VAL_21:.*]] = fir.convert %[[VAL_12]] : (index) -> i64201! CHECK:             %[[VAL_22:.*]] = fir.call @_FortranAScan1(%[[VAL_18]], %[[VAL_19]], %[[VAL_20]], %[[VAL_21]], %[[VAL_17]]) fastmath<contract> : (!fir.ref<i8>, i64, !fir.ref<i8>, i64, i1) -> i64202! CHECK:             %[[VAL_23:.*]] = fir.convert %[[VAL_22]] : (i64) -> i32203! CHECK:             hlfir.yield_element %[[VAL_23]] : i32204! CHECK:           }205! CHECK:           hlfir.assign %[[VAL_14]] to %[[VAL_8]]#0 : !hlfir.expr<10xi32>, !fir.ref<!fir.array<10xi32>>206! CHECK:           hlfir.destroy %[[VAL_14]] : !hlfir.expr<10xi32>207! CHECK:           return208! CHECK:         }209 210! CHECK-LABEL:   func.func @_QPextended_type_components() {211subroutine extended_type_components212  type t1213    integer :: t1i214  end type t1215  type, extends(t1) :: t2216    integer :: t2i217  end type t2218  type, extends(t2) :: t3219    integer :: t3i220  end type t3221  type, extends(t3) :: t4222    integer :: t4i223  end type t4224! CHECK:           %[[VAL_0:.*]] = fir.alloca !fir.box<!fir.heap<!fir.array<5xi32>>>225! CHECK:           %[[VAL_1:.*]] = fir.alloca !fir.box<!fir.heap<!fir.array<5xi32>>>226! CHECK:           %[[VAL_2:.*]] = fir.alloca !fir.box<!fir.heap<!fir.array<5xi32>>>227! CHECK:           %[[VAL_3:.*]] = fir.alloca !fir.box<!fir.heap<!fir.array<5xi32>>>228! CHECK:           %[[VAL_4:.*]] = fir.alloca !fir.type<_QFextended_type_componentsTu3229! CHECK:           %[[VAL_5:.*]]:2 = hlfir.declare %[[VAL_4]] {uniq_name = "_QFextended_type_componentsEu3v"} : (!fir.ref<!fir.type<_QFextended_type_componentsTu3230! CHECK:           %[[VAL_6:.*]] = arith.constant 5 : index231! CHECK:           %[[VAL_7:.*]] = fir.alloca !fir.array<5x!fir.type<_QFextended_type_componentsTu3232! CHECK:           %[[VAL_8:.*]] = fir.shape %[[VAL_6]] : (index) -> !fir.shape<1>233! CHECK:           %[[VAL_9:.*]]:2 = hlfir.declare %[[VAL_7]](%[[VAL_8]]) {uniq_name = "_QFextended_type_componentsEu3va"} : (!fir.ref<!fir.array<5x!fir.type<_QFextended_type_componentsTu3234 235  type u1236    integer :: u1i237  end type u1238  type, extends(u1) :: u2239    integer :: u2i240    type(t3) :: u2t3241    type(t3) :: u2t4242  end type u2243  type, extends(u2) :: u3244    integer :: u3i245  end type u3246 247  type(u3) :: u3v248  type(u3) :: u3va(5)249 250  call foo1(u3v%u2t3%t1i)251! CHECK:           %[[VAL_10:.*]] = hlfir.designate %[[VAL_5]]#0{"u2"}   : (!fir.ref<!fir.type<_QFextended_type_componentsTu3252! CHECK:           %[[VAL_11:.*]] = hlfir.designate %[[VAL_10]]{"u2t3"}   : (!fir.ref<!fir.type<_QFextended_type_componentsTu2253! CHECK:           %[[VAL_12:.*]] = hlfir.designate %[[VAL_11]]{"t2"}   : (!fir.ref<!fir.type<_QFextended_type_componentsTt3254! CHECK:           %[[VAL_13:.*]] = hlfir.designate %[[VAL_12]]{"t1"}   : (!fir.ref<!fir.type<_QFextended_type_componentsTt2255! CHECK:           %[[VAL_14:.*]] = hlfir.designate %[[VAL_13]]{"t1i"}   : (!fir.ref<!fir.type<_QFextended_type_componentsTt1256! CHECK:           fir.call @_QPfoo1(%[[VAL_14]]) fastmath<contract> : (!fir.ref<i32>) -> ()257 258  call foo2(u3v%u2%u2t3%t2%t1%t1i) ! different syntax for the previous value259! CHECK:           %[[VAL_15:.*]] = hlfir.designate %[[VAL_5]]#0{"u2"}   : (!fir.ref<!fir.type<_QFextended_type_componentsTu3260! CHECK:           %[[VAL_16:.*]] = hlfir.designate %[[VAL_15]]{"u2t3"}   : (!fir.ref<!fir.type<_QFextended_type_componentsTu2261! CHECK:           %[[VAL_17:.*]] = hlfir.designate %[[VAL_16]]{"t2"}   : (!fir.ref<!fir.type<_QFextended_type_componentsTt3262! CHECK:           %[[VAL_18:.*]] = hlfir.designate %[[VAL_17]]{"t1"}   : (!fir.ref<!fir.type<_QFextended_type_componentsTt2263! CHECK:           %[[VAL_19:.*]] = hlfir.designate %[[VAL_18]]{"t1i"}   : (!fir.ref<!fir.type<_QFextended_type_componentsTt1264! CHECK:           fir.call @_QPfoo2(%[[VAL_19]]) fastmath<contract> : (!fir.ref<i32>) -> ()265 266  call foo3(u3v%u2t4%t1i)267! CHECK:           %[[VAL_20:.*]] = hlfir.designate %[[VAL_5]]#0{"u2"}   : (!fir.ref<!fir.type<_QFextended_type_componentsTu3268! CHECK:           %[[VAL_21:.*]] = hlfir.designate %[[VAL_20]]{"u2t4"}   : (!fir.ref<!fir.type<_QFextended_type_componentsTu2269! CHECK:           %[[VAL_22:.*]] = hlfir.designate %[[VAL_21]]{"t2"}   : (!fir.ref<!fir.type<_QFextended_type_componentsTt3270! CHECK:           %[[VAL_23:.*]] = hlfir.designate %[[VAL_22]]{"t1"}   : (!fir.ref<!fir.type<_QFextended_type_componentsTt2271! CHECK:           %[[VAL_24:.*]] = hlfir.designate %[[VAL_23]]{"t1i"}   : (!fir.ref<!fir.type<_QFextended_type_componentsTt1272! CHECK:           fir.call @_QPfoo3(%[[VAL_24]]) fastmath<contract> : (!fir.ref<i32>) -> ()273 274  call foo4(u3v%u2t4%t2i)275! CHECK:           %[[VAL_25:.*]] = hlfir.designate %[[VAL_5]]#0{"u2"}   : (!fir.ref<!fir.type<_QFextended_type_componentsTu3276! CHECK:           %[[VAL_26:.*]] = hlfir.designate %[[VAL_25]]{"u2t4"}   : (!fir.ref<!fir.type<_QFextended_type_componentsTu2277! CHECK:           %[[VAL_27:.*]] = hlfir.designate %[[VAL_26]]{"t2"}   : (!fir.ref<!fir.type<_QFextended_type_componentsTt3278! CHECK:           %[[VAL_28:.*]] = hlfir.designate %[[VAL_27]]{"t2i"}   : (!fir.ref<!fir.type<_QFextended_type_componentsTt2279! CHECK:           fir.call @_QPfoo4(%[[VAL_28]]) fastmath<contract> : (!fir.ref<i32>) -> ()280 281  call foo5(u3va%u2t3%t1i)282! CHECK:           %[[VAL_29:.*]] = hlfir.designate %[[VAL_9]]#0{"u2"}   shape %[[VAL_8]] : (!fir.ref<!fir.array<5x!fir.type<_QFextended_type_componentsTu3283! CHECK:           %[[VAL_30:.*]] = hlfir.designate %[[VAL_29]]{"u2t3"}   shape %[[VAL_8]] : (!fir.box<!fir.array<5x!fir.type<_QFextended_type_componentsTu2284! CHECK:           %[[VAL_31:.*]] = hlfir.designate %[[VAL_30]]{"t2"}   shape %[[VAL_8]] : (!fir.box<!fir.array<5x!fir.type<_QFextended_type_componentsTt3285! CHECK:           %[[VAL_32:.*]] = hlfir.designate %[[VAL_31]]{"t1"}   shape %[[VAL_8]] : (!fir.box<!fir.array<5x!fir.type<_QFextended_type_componentsTt2286! CHECK:           %[[VAL_33:.*]] = hlfir.designate %[[VAL_32]]{"t1i"}   shape %[[VAL_8]] : (!fir.box<!fir.array<5x!fir.type<_QFextended_type_componentsTt1287! CHECK:           %[[VAL_34:.*]]:2 = hlfir.copy_in %[[VAL_33]] to %[[VAL_3]] : (!fir.box<!fir.array<5xi32>>, !fir.ref<!fir.box<!fir.heap<!fir.array<5xi32>>>>) -> (!fir.box<!fir.array<5xi32>>, i1)288! CHECK:           %[[VAL_35:.*]] = fir.box_addr %[[VAL_34]]#0 : (!fir.box<!fir.array<5xi32>>) -> !fir.ref<!fir.array<5xi32>>289! CHECK:           fir.call @_QPfoo5(%[[VAL_35]]) fastmath<contract> : (!fir.ref<!fir.array<5xi32>>) -> ()290 291  call foo6(u3va%u2%u2t3%t2%t1%t1i) ! different syntax for the previous value292! CHECK:           %[[VAL_36:.*]] = hlfir.designate %[[VAL_9]]#0{"u2"}   shape %[[VAL_8]] : (!fir.ref<!fir.array<5x!fir.type<_QFextended_type_componentsTu3293! CHECK:           %[[VAL_37:.*]] = hlfir.designate %[[VAL_36]]{"u2t3"}   shape %[[VAL_8]] : (!fir.box<!fir.array<5x!fir.type<_QFextended_type_componentsTu2294! CHECK:           %[[VAL_38:.*]] = hlfir.designate %[[VAL_37]]{"t2"}   shape %[[VAL_8]] : (!fir.box<!fir.array<5x!fir.type<_QFextended_type_componentsTt3295! CHECK:           %[[VAL_39:.*]] = hlfir.designate %[[VAL_38]]{"t1"}   shape %[[VAL_8]] : (!fir.box<!fir.array<5x!fir.type<_QFextended_type_componentsTt2296! CHECK:           %[[VAL_40:.*]] = hlfir.designate %[[VAL_39]]{"t1i"}   shape %[[VAL_8]] : (!fir.box<!fir.array<5x!fir.type<_QFextended_type_componentsTt1297! CHECK:           %[[VAL_41:.*]]:2 = hlfir.copy_in %[[VAL_40]] to %[[VAL_2]] : (!fir.box<!fir.array<5xi32>>, !fir.ref<!fir.box<!fir.heap<!fir.array<5xi32>>>>) -> (!fir.box<!fir.array<5xi32>>, i1)298! CHECK:           %[[VAL_42:.*]] = fir.box_addr %[[VAL_41]]#0 : (!fir.box<!fir.array<5xi32>>) -> !fir.ref<!fir.array<5xi32>>299! CHECK:           fir.call @_QPfoo6(%[[VAL_42]]) fastmath<contract> : (!fir.ref<!fir.array<5xi32>>) -> ()300 301  call foo7(u3va%u2t4%t1i)302! CHECK:           %[[VAL_43:.*]] = hlfir.designate %[[VAL_9]]#0{"u2"}   shape %[[VAL_8]] : (!fir.ref<!fir.array<5x!fir.type<_QFextended_type_componentsTu3303! CHECK:           %[[VAL_44:.*]] = hlfir.designate %[[VAL_43]]{"u2t4"}   shape %[[VAL_8]] : (!fir.box<!fir.array<5x!fir.type<_QFextended_type_componentsTu2304! CHECK:           %[[VAL_45:.*]] = hlfir.designate %[[VAL_44]]{"t2"}   shape %[[VAL_8]] : (!fir.box<!fir.array<5x!fir.type<_QFextended_type_componentsTt3305! CHECK:           %[[VAL_46:.*]] = hlfir.designate %[[VAL_45]]{"t1"}   shape %[[VAL_8]] : (!fir.box<!fir.array<5x!fir.type<_QFextended_type_componentsTt2306! CHECK:           %[[VAL_47:.*]] = hlfir.designate %[[VAL_46]]{"t1i"}   shape %[[VAL_8]] : (!fir.box<!fir.array<5x!fir.type<_QFextended_type_componentsTt1307! CHECK:           %[[VAL_48:.*]]:2 = hlfir.copy_in %[[VAL_47]] to %[[VAL_1]] : (!fir.box<!fir.array<5xi32>>, !fir.ref<!fir.box<!fir.heap<!fir.array<5xi32>>>>) -> (!fir.box<!fir.array<5xi32>>, i1)308! CHECK:           %[[VAL_49:.*]] = fir.box_addr %[[VAL_48]]#0 : (!fir.box<!fir.array<5xi32>>) -> !fir.ref<!fir.array<5xi32>>309! CHECK:           fir.call @_QPfoo7(%[[VAL_49]]) fastmath<contract> : (!fir.ref<!fir.array<5xi32>>) -> ()310 311  call foo8(u3va%u2t4%t2i)312! CHECK:           %[[VAL_50:.*]] = hlfir.designate %[[VAL_9]]#0{"u2"}   shape %[[VAL_8]] : (!fir.ref<!fir.array<5x!fir.type<_QFextended_type_componentsTu3313! CHECK:           %[[VAL_51:.*]] = hlfir.designate %[[VAL_50]]{"u2t4"}   shape %[[VAL_8]] : (!fir.box<!fir.array<5x!fir.type<_QFextended_type_componentsTu2314! CHECK:           %[[VAL_52:.*]] = hlfir.designate %[[VAL_51]]{"t2"}   shape %[[VAL_8]] : (!fir.box<!fir.array<5x!fir.type<_QFextended_type_componentsTt3315! CHECK:           %[[VAL_53:.*]] = hlfir.designate %[[VAL_52]]{"t2i"}   shape %[[VAL_8]] : (!fir.box<!fir.array<5x!fir.type<_QFextended_type_componentsTt2316! CHECK:           %[[VAL_54:.*]]:2 = hlfir.copy_in %[[VAL_53]] to %[[VAL_0]] : (!fir.box<!fir.array<5xi32>>, !fir.ref<!fir.box<!fir.heap<!fir.array<5xi32>>>>) -> (!fir.box<!fir.array<5xi32>>, i1)317! CHECK:           %[[VAL_55:.*]] = fir.box_addr %[[VAL_54]]#0 : (!fir.box<!fir.array<5xi32>>) -> !fir.ref<!fir.array<5xi32>>318! CHECK:           fir.call @_QPfoo8(%[[VAL_55]]) fastmath<contract> : (!fir.ref<!fir.array<5xi32>>) -> ()319end subroutine extended_type_components320