diff --git a/flang/test/Analysis/AliasAnalysis/alias-analysis-3.fir b/flang/test/Analysis/AliasAnalysis/alias-analysis-3.fir index eab438576c2bc..55f40d8d75249 100644 --- a/flang/test/Analysis/AliasAnalysis/alias-analysis-3.fir +++ b/flang/test/Analysis/AliasAnalysis/alias-analysis-3.fir @@ -34,8 +34,7 @@ func.func @_QMmPtest(%arg0: !fir.ref>> {fir.bindc_name = %0 = fir.address_of(@_QMmEa) {test.ptr = "a"} : !fir.ref>}>> %1 = fir.embox %arg1 : (!fir.ref) -> !fir.box> fir.store %1 to %arg0 : !fir.ref>> - %2 = fir.field_index pointer_component, !fir.type<_QMmTt{pointer_component:!fir.box>}> - %3 = fir.coordinate_of %0, %2 : (!fir.ref>}>>, !fir.field) -> !fir.ref>> + %3 = fir.coordinate_of %0, pointer_component : (!fir.ref>}>>) -> !fir.ref>> %4 = fir.load %3 : !fir.ref>> %5 = fir.box_addr %4 : (!fir.box>) -> !fir.ptr %6 = fir.convert %5 : (!fir.ptr) -> !fir.ref @@ -71,12 +70,10 @@ fir.global @_QMmEa : !fir.type<_QMmTt{pointer_component:!fir.box>} } func.func @_QMmPtest(%arg0: !fir.ref>}>> {fir.bindc_name = "b"}, %arg1: !fir.ref {fir.bindc_name = "x", fir.target}) attributes {test.ptr = "func"} { %0 = fir.address_of(@_QMmEa) {test.ptr = "a"} : !fir.ref>}>> - %1 = fir.field_index pointer_component, !fir.type<_QMmTt{pointer_component:!fir.box>}> - %2 = fir.coordinate_of %0, %1 : (!fir.ref>}>>, !fir.field) -> !fir.ref>> + %2 = fir.coordinate_of %0, pointer_component : (!fir.ref>}>>) -> !fir.ref>> %3 = fir.embox %arg1 : (!fir.ref) -> !fir.box> fir.store %3 to %2 : !fir.ref>> - %4 = fir.field_index pointer_component, !fir.type<_QMmTt{pointer_component:!fir.box>}> - %5 = fir.coordinate_of %arg0, %4 : (!fir.ref>}>>, !fir.field) -> !fir.ref>> + %5 = fir.coordinate_of %arg0, pointer_component : (!fir.ref>}>>) -> !fir.ref>> %6 = fir.load %5 : !fir.ref>> %7 = fir.box_addr %6 : (!fir.box>) -> !fir.ptr %8 = fir.convert %7 : (!fir.ptr) -> !fir.ref @@ -106,12 +103,10 @@ func.func private @_QPtest2(!fir.ref) // CHECK: func.region0#0 <-> func.region0#1: NoAlias func.func @_QMmPtest(%arg0: !fir.ref>}>> {fir.bindc_name = "a"}, %arg1: !fir.ref>}>> {fir.bindc_name = "b"}, %arg2: !fir.ref {fir.bindc_name = "x", fir.target}) attributes {test.ptr = "func"} { - %0 = fir.field_index pointer_component, !fir.type<_QMmTt{pointer_component:!fir.box>}> - %1 = fir.coordinate_of %arg0, %0 : (!fir.ref>}>>, !fir.field) -> !fir.ref>> + %1 = fir.coordinate_of %arg0, pointer_component : (!fir.ref>}>>) -> !fir.ref>> %2 = fir.embox %arg2 : (!fir.ref) -> !fir.box> fir.store %2 to %1 : !fir.ref>> - %3 = fir.field_index pointer_component, !fir.type<_QMmTt{pointer_component:!fir.box>}> - %4 = fir.coordinate_of %arg1, %3 : (!fir.ref>}>>, !fir.field) -> !fir.ref>> + %4 = fir.coordinate_of %arg1, pointer_component : (!fir.ref>}>>) -> !fir.ref>> %5 = fir.load %4 : !fir.ref>> %6 = fir.box_addr %5 : (!fir.box>) -> !fir.ptr %7 = fir.convert %6 : (!fir.ptr) -> !fir.ref @@ -140,13 +135,11 @@ func.func private @_QPtest2(!fir.ref) // CHECK: func.region0#0 <-> func.region0#1: NoAlias func.func @_QMmPtest(%arg0: !fir.ref>}>> {fir.bindc_name = "a"}, %arg1: !fir.ref>}>> {fir.bindc_name = "b"}) attributes {test.ptr = "func"} { - %0 = fir.field_index allocatable_component, !fir.type<_QMmTt{allocatable_component:!fir.box>}> - %1 = fir.coordinate_of %arg0, %0 : (!fir.ref>}>>, !fir.field) -> !fir.ref>> + %1 = fir.coordinate_of %arg0, allocatable_component : (!fir.ref>}>>) -> !fir.ref>> %2 = fir.allocmem f32 {uniq_name = "_QMmEallocatable_component.alloc"} %3 = fir.embox %2 : (!fir.heap) -> !fir.box> fir.store %3 to %1 : !fir.ref>> - %4 = fir.field_index allocatable_component, !fir.type<_QMmTt{allocatable_component:!fir.box>}> - %5 = fir.coordinate_of %arg1, %4 : (!fir.ref>}>>, !fir.field) -> !fir.ref>> + %5 = fir.coordinate_of %arg1, allocatable_component : (!fir.ref>}>>) -> !fir.ref>> %6 = fir.load %5 : !fir.ref>> %7 = fir.box_addr %6 : (!fir.box>) -> !fir.heap %8 = fir.convert %7 : (!fir.heap) -> !fir.ref diff --git a/flang/test/Analysis/AliasAnalysis/load-ptr-designate.fir b/flang/test/Analysis/AliasAnalysis/load-ptr-designate.fir index de81841d9249d..6b9ff25f590f3 100644 --- a/flang/test/Analysis/AliasAnalysis/load-ptr-designate.fir +++ b/flang/test/Analysis/AliasAnalysis/load-ptr-designate.fir @@ -141,22 +141,18 @@ func.func @_QPtest.fir() { %5 = fir.declare %4 {test.ptr="t_obj.fir", fortran_attrs = #fir.var_attrs, uniq_name = "_QFtestEt_obj"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>) -> !fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>> %6 = fir.alloca f32 {bindc_name = "v", uniq_name = "_QFtestEv"} %7 = fir.declare %6 {test.ptr = "v.fir", uniq_name = "_QFtestEv"} : (!fir.ref) -> !fir.ref - %8 = fir.field_index p0, !fir.type<_QMmTty{p0:!fir.box>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}> - %9 = fir.coordinate_of %1, %8 {test.ptr="obj%p0.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>, !fir.field) -> !fir.ref>> + %9 = fir.coordinate_of %1, p0 {test.ptr="obj%p0.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>) -> !fir.ref>> %10 = fir.load %9 : !fir.ref>> %11 = fir.box_addr %10 {test.ptr = "obj%p0.tgt.fir"} : (!fir.box>) -> !fir.ptr - %12 = fir.field_index p1, !fir.type<_QMmTty{p0:!fir.box>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}> - %13 = fir.coordinate_of %1, %12 {test.ptr="obj%p1.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>, !fir.field) -> !fir.ref>> + %13 = fir.coordinate_of %1, p1 {test.ptr="obj%p1.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>) -> !fir.ref>> %14 = fir.load %13 : !fir.ref>> %15 = fir.box_addr %14 {test.ptr = "obj%p1.tgt.fir"} : (!fir.box>) -> !fir.ptr %c2 = arith.constant 2 : index %16 = fir.shape %c2 : (index) -> !fir.shape<1> %c1 = arith.constant 1 : index - %17 = fir.field_index arr, !fir.type<_QMmTty{p0:!fir.box>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}> - %18 = fir.coordinate_of %1, %17 : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>, !fir.field) -> !fir.ref> + %18 = fir.coordinate_of %1, arr : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>) -> !fir.ref> %19 = fir.array_coor %18(%16) %c1 {test.ptr="obj%arr(1).fir"} : (!fir.ref>, !fir.shape<1>, index) -> !fir.ref - %20 = fir.field_index alloc, !fir.type<_QMmTty{p0:!fir.box>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}> - %21 = fir.coordinate_of %1, %20 {test.ptr="obj%alloc.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>, !fir.field) -> !fir.ref>> + %21 = fir.coordinate_of %1, alloc {test.ptr="obj%alloc.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>) -> !fir.ref>> %22 = fir.load %21 : !fir.ref>> %repeat22 = fir.load %21 : !fir.ref>> %23 = fir.box_addr %22 {test.ptr = "obj%alloc.tgt.fir"} : (!fir.box>) -> !fir.heap @@ -164,11 +160,9 @@ func.func @_QPtest.fir() { %c2_0 = arith.constant 2 : index %24 = fir.shape %c2_0 : (index) -> !fir.shape<1> %c1_1 = arith.constant 1 : index - %25 = fir.field_index arr, !fir.type<_QMmTty{p0:!fir.box>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}> - %26 = fir.coordinate_of %5, %25 : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>, !fir.field) -> !fir.ref> + %26 = fir.coordinate_of %5, arr : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>) -> !fir.ref> %27 = fir.array_coor %26(%24) %c1_1 {test.ptr="t_obj%arr(1).fir"} : (!fir.ref>, !fir.shape<1>, index) -> !fir.ref - %28 = fir.field_index alloc, !fir.type<_QMmTty{p0:!fir.box>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}> - %29 = fir.coordinate_of %5, %28 {test.ptr="t_obj%alloc.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>, !fir.field) -> !fir.ref>> + %29 = fir.coordinate_of %5, alloc {test.ptr="t_obj%alloc.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>) -> !fir.ref>> %30 = fir.load %29 : !fir.ref>> %31 = fir.box_addr %30 {test.ptr = "t_obj%alloc.tgt.fir"} : (!fir.box>) -> !fir.heap return @@ -309,22 +303,18 @@ func.func @_QPtest.fir(%arg0: !fir.ref, uniq_name = "_QFtestEt_obj"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>, !fir.dscope) -> !fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>> %5 = fir.alloca f32 {bindc_name = "v", uniq_name = "_QFtestEv"} %6 = fir.declare %5 {test.ptr = "v.fir", uniq_name = "_QFtestEv"} : (!fir.ref) -> !fir.ref - %7 = fir.field_index p0, !fir.type<_QMmTty{p0:!fir.box>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}> - %8 = fir.coordinate_of %1, %7 {test.ptr="obj%p0.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>, !fir.field) -> !fir.ref>> + %8 = fir.coordinate_of %1, p0 {test.ptr="obj%p0.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>) -> !fir.ref>> %9 = fir.load %8 : !fir.ref>> %10 = fir.box_addr %9 {test.ptr = "obj%p0.tgt.fir"} : (!fir.box>) -> !fir.ptr - %11 = fir.field_index p1, !fir.type<_QMmTty{p0:!fir.box>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}> - %12 = fir.coordinate_of %1, %11 {test.ptr="obj%p1.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>, !fir.field) -> !fir.ref>> + %12 = fir.coordinate_of %1, p1 {test.ptr="obj%p1.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>) -> !fir.ref>> %13 = fir.load %12 : !fir.ref>> %14 = fir.box_addr %13 {test.ptr = "obj%p1.tgt.fir"} : (!fir.box>) -> !fir.ptr %c2 = arith.constant 2 : index %15 = fir.shape %c2 : (index) -> !fir.shape<1> %c1 = arith.constant 1 : index - %16 = fir.field_index arr, !fir.type<_QMmTty{p0:!fir.box>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}> - %17 = fir.coordinate_of %1, %16 : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>, !fir.field) -> !fir.ref> + %17 = fir.coordinate_of %1, arr : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>) -> !fir.ref> %18 = fir.array_coor %17(%15) %c1 {test.ptr="obj%arr(1).fir"} : (!fir.ref>, !fir.shape<1>, index) -> !fir.ref - %19 = fir.field_index alloc, !fir.type<_QMmTty{p0:!fir.box>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}> - %20 = fir.coordinate_of %1, %19 {test.ptr="obj%alloc.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>, !fir.field) -> !fir.ref>> + %20 = fir.coordinate_of %1, alloc {test.ptr="obj%alloc.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>) -> !fir.ref>> %21 = fir.load %20 : !fir.ref>> %repeat21 = fir.load %20 : !fir.ref>> %22 = fir.box_addr %21 {test.ptr = "obj%alloc.tgt.fir"} : (!fir.box>) -> !fir.heap @@ -332,11 +322,9 @@ func.func @_QPtest.fir(%arg0: !fir.ref !fir.shape<1> %c1_1 = arith.constant 1 : index - %24 = fir.field_index arr, !fir.type<_QMmTty{p0:!fir.box>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}> - %25 = fir.coordinate_of %4, %24 : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>, !fir.field) -> !fir.ref> + %25 = fir.coordinate_of %4, arr : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>) -> !fir.ref> %26 = fir.array_coor %25(%23) %c1_1 {test.ptr="t_obj%arr(1).fir"} : (!fir.ref>, !fir.shape<1>, index) -> !fir.ref - %27 = fir.field_index alloc, !fir.type<_QMmTty{p0:!fir.box>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}> - %28 = fir.coordinate_of %4, %27 {test.ptr="t_obj%alloc.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>, !fir.field) -> !fir.ref>> + %28 = fir.coordinate_of %4, alloc {test.ptr="t_obj%alloc.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>) -> !fir.ref>> %29 = fir.load %28 : !fir.ref>> %30 = fir.box_addr %29 {test.ptr = "t_obj%alloc.tgt.fir"} : (!fir.box>) -> !fir.heap return @@ -477,22 +465,18 @@ func.func @_QPtest.fir() { %5 = fir.declare %4 {test.ptr="t_obj.fir", fortran_attrs = #fir.var_attrs, uniq_name = "_QMmEt_obj"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>) -> !fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>> %6 = fir.alloca f32 {bindc_name = "v", uniq_name = "_QFtestEv"} %7 = fir.declare %6 {test.ptr = "v.fir", uniq_name = "_QFtestEv"} : (!fir.ref) -> !fir.ref - %8 = fir.field_index p0, !fir.type<_QMmTty{p0:!fir.box>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}> - %9 = fir.coordinate_of %1, %8 {test.ptr="obj%p0.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>, !fir.field) -> !fir.ref>> + %9 = fir.coordinate_of %1, p0 {test.ptr="obj%p0.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>) -> !fir.ref>> %10 = fir.load %9 : !fir.ref>> %11 = fir.box_addr %10 {test.ptr = "obj%p0.tgt.fir"} : (!fir.box>) -> !fir.ptr - %12 = fir.field_index p1, !fir.type<_QMmTty{p0:!fir.box>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}> - %13 = fir.coordinate_of %1, %12 {test.ptr="obj%p1.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>, !fir.field) -> !fir.ref>> + %13 = fir.coordinate_of %1, p1 {test.ptr="obj%p1.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>) -> !fir.ref>> %14 = fir.load %13 : !fir.ref>> %15 = fir.box_addr %14 {test.ptr = "obj%p1.tgt.fir"} : (!fir.box>) -> !fir.ptr %c2 = arith.constant 2 : index %16 = fir.shape %c2 : (index) -> !fir.shape<1> %c1 = arith.constant 1 : index - %17 = fir.field_index arr, !fir.type<_QMmTty{p0:!fir.box>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}> - %18 = fir.coordinate_of %1, %17 : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>, !fir.field) -> !fir.ref> + %18 = fir.coordinate_of %1, arr : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>) -> !fir.ref> %19 = fir.array_coor %18(%16) %c1 {test.ptr="obj%arr(1).fir"} : (!fir.ref>, !fir.shape<1>, index) -> !fir.ref - %20 = fir.field_index alloc, !fir.type<_QMmTty{p0:!fir.box>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}> - %21 = fir.coordinate_of %1, %20 {test.ptr="obj%alloc.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>, !fir.field) -> !fir.ref>> + %21 = fir.coordinate_of %1, alloc {test.ptr="obj%alloc.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>) -> !fir.ref>> %22 = fir.load %21 : !fir.ref>> %repeat22 = fir.load %21 : !fir.ref>> %23 = fir.box_addr %22 {test.ptr = "obj%alloc.tgt.fir"} : (!fir.box>) -> !fir.heap @@ -500,11 +484,9 @@ func.func @_QPtest.fir() { %c2_0 = arith.constant 2 : index %24 = fir.shape %c2_0 : (index) -> !fir.shape<1> %c1_1 = arith.constant 1 : index - %25 = fir.field_index arr, !fir.type<_QMmTty{p0:!fir.box>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}> - %26 = fir.coordinate_of %5, %25 : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>, !fir.field) -> !fir.ref> + %26 = fir.coordinate_of %5, arr : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>) -> !fir.ref> %27 = fir.array_coor %26(%24) %c1_1 {test.ptr="t_obj%arr(1).fir"} : (!fir.ref>, !fir.shape<1>, index) -> !fir.ref - %28 = fir.field_index alloc, !fir.type<_QMmTty{p0:!fir.box>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}> - %29 = fir.coordinate_of %5, %28 {test.ptr="t_obj%alloc.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>, !fir.field) -> !fir.ref>> + %29 = fir.coordinate_of %5, alloc {test.ptr="t_obj%alloc.fir"} : (!fir.ref>,p1:!fir.box>,arr:!fir.array<2xf32>,alloc:!fir.box>}>>) -> !fir.ref>> %30 = fir.load %29 : !fir.ref>> %31 = fir.box_addr %30 {test.ptr = "t_obj%alloc.tgt.fir"} : (!fir.box>) -> !fir.heap return diff --git a/flang/test/Analysis/AliasAnalysis/ptr-component.fir b/flang/test/Analysis/AliasAnalysis/ptr-component.fir index 856d8e2d94c98..cdd18832b113e 100644 --- a/flang/test/Analysis/AliasAnalysis/ptr-component.fir +++ b/flang/test/Analysis/AliasAnalysis/ptr-component.fir @@ -84,12 +84,10 @@ func.func @_QMmPfoo.fir(%arg0: !fir.ref) -> !fir.ref %5 = fir.declare %arg0 {test.ptr = "x.fir", uniq_name = "_QMmFfooEx"} : (!fir.ref>>,i:i32}>>) -> !fir.ref>>,i:i32}>> %6 = fir.declare %arg1 {test.ptr = "y.fir", uniq_name = "_QMmFfooEy"} : (!fir.ref>>,i:i32}>>) -> !fir.ref>>,i:i32}>> - %7 = fir.field_index next, !fir.type<_QMmTt{next:!fir.box>>,i:i32}> - %8 = fir.coordinate_of %5, %7 {test.ptr="xnext1.fir"} : (!fir.ref>>,i:i32}>>, !fir.field) -> !fir.ref>>,i:i32}>>>> + %8 = fir.coordinate_of %5, next {test.ptr="xnext1.fir"} : (!fir.ref>>,i:i32}>>) -> !fir.ref>>,i:i32}>>>> %9 = fir.load %8 : !fir.ref>>,i:i32}>>>> %10 = fir.box_addr %9 : (!fir.box>>,i:i32}>>>) -> !fir.ptr>>,i:i32}>> - %11 = fir.field_index i, !fir.type<_QMmTt{next:!fir.box>>,i:i32}> - %12 = fir.coordinate_of %10, %11 : (!fir.ptr>>,i:i32}>>, !fir.field) -> !fir.ref + %12 = fir.coordinate_of %10, i : (!fir.ptr>>,i:i32}>>) -> !fir.ref %13 = fir.load %12 : !fir.ref fir.store %13 to %2 : !fir.ref %14 = fir.embox %5 : (!fir.ref>>,i:i32}>>) -> !fir.box>>,i:i32}>> @@ -102,16 +100,13 @@ func.func @_QMmPfoo.fir(%arg0: !fir.ref>>,i:i32}>>) -> !fir.box %19 = fir.convert %16 : (!fir.ref>) -> !fir.ref fir.call @_FortranAAssign(%17, %18, %19, %c14_i32) : (!fir.ref>, !fir.box, !fir.ref, i32) -> () - %21 = fir.field_index next, !fir.type<_QMmTt{next:!fir.box>>,i:i32}> - %22 = fir.coordinate_of %5, %21 {test.ptr="xnext2.fir"}: (!fir.ref>>,i:i32}>>, !fir.field) -> !fir.ref>>,i:i32}>>>> + %22 = fir.coordinate_of %5, next {test.ptr="xnext2.fir"}: (!fir.ref>>,i:i32}>>) -> !fir.ref>>,i:i32}>>>> %23 = fir.load %22 : !fir.ref>>,i:i32}>>>> %24 = fir.box_addr %23 : (!fir.box>>,i:i32}>>>) -> !fir.ptr>>,i:i32}>> - %25 = fir.field_index i, !fir.type<_QMmTt{next:!fir.box>>,i:i32}> - %26 = fir.coordinate_of %24, %25 : (!fir.ptr>>,i:i32}>>, !fir.field) -> !fir.ref + %26 = fir.coordinate_of %24, i : (!fir.ptr>>,i:i32}>>) -> !fir.ref %27 = fir.load %26 : !fir.ref fir.store %27 to %4 : !fir.ref - %28 = fir.field_index next, !fir.type<_QMmTt{next:!fir.box>>,i:i32}> - %29 = fir.coordinate_of %6, %28 {test.ptr="ynext.fir"} : (!fir.ref>>,i:i32}>>, !fir.field) -> !fir.ref>>,i:i32}>>>> + %29 = fir.coordinate_of %6, next {test.ptr="ynext.fir"} : (!fir.ref>>,i:i32}>>) -> !fir.ref>>,i:i32}>>>> return } @@ -138,12 +133,10 @@ func.func @_QMmPfoo2(%arg0: !fir.ref>>,i:i32}>> {fir.bindc_name = "x"}, %arg1: !fir.ref>>,i:i32}>> {fir.bindc_name = "y"}) { %0 = fir.declare %arg0 {uniq_name = "_QMmFfooEx"} : (!fir.ref>>,i:i32}>>) -> !fir.ref>>,i:i32}>> %1 = fir.declare %arg1 {uniq_name = "_QMmFfooEy"} : (!fir.ref>>,i:i32}>>) -> !fir.ref>>,i:i32}>> - %2 = fir.field_index next, !fir.type<_QMmTt{next:!fir.box>>,i:i32}> - %3 = fir.coordinate_of %0, %2 : (!fir.ref>>,i:i32}>>, !fir.field) -> !fir.ref>>,i:i32}>>>> + %3 = fir.coordinate_of %0, next : (!fir.ref>>,i:i32}>>) -> !fir.ref>>,i:i32}>>>> %4 = fir.load %3 : !fir.ref>>,i:i32}>>>> %5 = fir.box_addr %4 {test.ptr = "xnext.fir"} : (!fir.box>>,i:i32}>>>) -> !fir.ptr>>,i:i32}>> - %6 = fir.field_index next, !fir.type<_QMmTt{next:!fir.box>>,i:i32}> - %7 = fir.coordinate_of %1, %6 : (!fir.ref>>,i:i32}>>, !fir.field) -> !fir.ref>>,i:i32}>>>> + %7 = fir.coordinate_of %1, next : (!fir.ref>>,i:i32}>>) -> !fir.ref>>,i:i32}>>>> %8 = fir.load %7 : !fir.ref>>,i:i32}>>>> %9 = fir.box_addr %8 {test.ptr = "ynext.fir"} : (!fir.box>>,i:i32}>>>) -> !fir.ptr>>,i:i32}>> return @@ -185,8 +178,7 @@ func.func @_QMmPfoo3(%arg0: !fir.ref>>}>> {fir.bindc_name = "x"}, %arg1: !fir.ref>>}>> {fir.bindc_name = "y"}) { %0 = fir.declare %arg0 {uniq_name = "_QMmFfooEx"} : (!fir.ref>>}>>) -> !fir.ref>>}>> %1 = fir.declare %arg1 {uniq_name = "_QMmFfooEy"} : (!fir.ref>>}>>) -> !fir.ref>>}>> - %2 = fir.field_index array, !fir.type<_QMmTta{array:!fir.box>>}> - %3 = fir.coordinate_of %1, %2 : (!fir.ref>>}>>, !fir.field) -> !fir.ref>>> + %3 = fir.coordinate_of %1, array : (!fir.ref>>}>>) -> !fir.ref>>> %4 = fir.load %3 : !fir.ref>>> %c1 = arith.constant 1 : index %c0 = arith.constant 0 : index @@ -194,8 +186,7 @@ func.func @_QMmPfoo3.fir(%arg0: !fir.ref !fir.shift<1> %7 = fir.array_coor %4(%6) %c1 {test.ptr="yarray.fir"} : (!fir.box>>, !fir.shift<1>, index) -> !fir.ref %8 = fir.load %7 : !fir.ref - %9 = fir.field_index array, !fir.type<_QMmTta{array:!fir.box>>}> - %10 = fir.coordinate_of %0, %9 : (!fir.ref>>}>>, !fir.field) -> !fir.ref>>> + %10 = fir.coordinate_of %0, array : (!fir.ref>>}>>) -> !fir.ref>>> %11 = fir.load %10 : !fir.ref>>> %c1_0 = arith.constant 1 : index %c0_1 = arith.constant 0 : index @@ -238,8 +229,7 @@ func.func @_QMmPtest() { func.func @_QMmPtest.fir() { %0 = fir.address_of(@_QMmEx) : !fir.ref>}>> %1 = fir.declare %0 {test.ptr = "x.fir", uniq_name = "_QMmEx"} : (!fir.ref>}>>) -> !fir.ref>}>> - %2 = fir.field_index p, !fir.type<_QMmTt{p:!fir.box>}> - %3 = fir.coordinate_of %1, %2 {test.ptr="x%p.fir"} : (!fir.ref>}>>, !fir.field) -> !fir.ref>> + %3 = fir.coordinate_of %1, p {test.ptr="x%p.fir"} : (!fir.ref>}>>) -> !fir.ref>> return } @@ -301,14 +291,10 @@ func.func @_QMmPtest() { func.func @_QMmPtest.fir() { %0 = fir.alloca !fir.type<_QMmTt2{x:!fir.type<_QMmTt1{p:!fir.box>}>,p:!fir.box>,i:i32}> {bindc_name = "x", uniq_name = "_QMmFtestEx"} %1 = fir.declare %0 {test.ptr = "x.fir", uniq_name = "_QMmFtestEx"} : (!fir.ref>}>,p:!fir.box>,i:i32}>>) -> !fir.ref>}>,p:!fir.box>,i:i32}>> - %2 = fir.field_index x, !fir.type<_QMmTt2{x:!fir.type<_QMmTt1{p:!fir.box>}>,p:!fir.box>,i:i32}> - %3 = fir.coordinate_of %1, %2 {test.ptr="x%x.fir"} : (!fir.ref>}>,p:!fir.box>,i:i32}>>, !fir.field) -> !fir.ref>}>> - %4 = fir.field_index p, !fir.type<_QMmTt2{x:!fir.type<_QMmTt1{p:!fir.box>}>,p:!fir.box>,i:i32}> - %5 = fir.coordinate_of %1, %4 {test.ptr="x%p.fir"} : (!fir.ref>}>,p:!fir.box>,i:i32}>>, !fir.field) -> !fir.ref>> - %6 = fir.field_index i, !fir.type<_QMmTt2{x:!fir.type<_QMmTt1{p:!fir.box>}>,p:!fir.box>,i:i32}> - %7 = fir.coordinate_of %1, %6 {test.ptr="x%i.fir"} : (!fir.ref>}>,p:!fir.box>,i:i32}>>, !fir.field) -> !fir.ref - %8 = fir.field_index p, !fir.type<_QMmTt1{p:!fir.box>}> - %9 = fir.coordinate_of %3, %8 {test.ptr="x%x%p.fir"} : (!fir.ref>}>>, !fir.field) -> !fir.ref>> + %3 = fir.coordinate_of %1, x {test.ptr="x%x.fir"} : (!fir.ref>}>,p:!fir.box>,i:i32}>>) -> !fir.ref>}>> + %5 = fir.coordinate_of %1, p {test.ptr="x%p.fir"} : (!fir.ref>}>,p:!fir.box>,i:i32}>>) -> !fir.ref>> + %7 = fir.coordinate_of %1, i {test.ptr="x%i.fir"} : (!fir.ref>}>,p:!fir.box>,i:i32}>>) -> !fir.ref + %9 = fir.coordinate_of %3, p {test.ptr="x%x%p.fir"} : (!fir.ref>}>>) -> !fir.ref>> return } @@ -441,24 +427,18 @@ func.func @_QMmPtest.fir(%arg0: !fir.ref>> {fir.bindc_nam %4 = fir.declare %arg1 dummy_scope %0 {fortran_attrs = #fir.var_attrs, test.ptr = "arga.fir", uniq_name = "_QMmFtestEarga"} : (!fir.ref>>, !fir.dscope) -> !fir.ref>> %5 = fir.declare %arg2 dummy_scope %0 {test.ptr = "arg.fir", uniq_name = "_QMmFtestEarg"} : (!fir.ref>,i:i32}>>, !fir.dscope) -> !fir.ref>,i:i32}>> - %6 = fir.field_index p, !fir.type<_QMmTt{p:!fir.box>,i:i32}> - %7 = fir.coordinate_of %5, %6 {test.ptr="arg%p.fir"} : (!fir.ref>,i:i32}>>, !fir.field) -> !fir.ref>> - %8 = fir.field_index i, !fir.type<_QMmTt{p:!fir.box>,i:i32}> - %9 = fir.coordinate_of %5, %8 {test.ptr="arg%i.fir"} : (!fir.ref>,i:i32}>>, !fir.field) -> !fir.ref + %7 = fir.coordinate_of %5, p {test.ptr="arg%p.fir"} : (!fir.ref>,i:i32}>>) -> !fir.ref>> + %9 = fir.coordinate_of %5, i {test.ptr="arg%i.fir"} : (!fir.ref>,i:i32}>>) -> !fir.ref %10 = fir.address_of(@_QMmEglob) : !fir.ref>,i:i32}>> %11 = fir.declare %10 {test.ptr = "glob.fir", uniq_name = "_QMmEglob"} : (!fir.ref>,i:i32}>>) -> !fir.ref>,i:i32}>> - %12 = fir.field_index p, !fir.type<_QMmTt{p:!fir.box>,i:i32}> - %13 = fir.coordinate_of %11, %12 {test.ptr="glob%p.fir"} : (!fir.ref>,i:i32}>>, !fir.field) -> !fir.ref>> - %14 = fir.field_index i, !fir.type<_QMmTt{p:!fir.box>,i:i32}> - %15 = fir.coordinate_of %11, %14 {test.ptr="glob%i.fir"} : (!fir.ref>,i:i32}>>, !fir.field) -> !fir.ref + %13 = fir.coordinate_of %11, p {test.ptr="glob%p.fir"} : (!fir.ref>,i:i32}>>) -> !fir.ref>> + %15 = fir.coordinate_of %11, i {test.ptr="glob%i.fir"} : (!fir.ref>,i:i32}>>) -> !fir.ref %16 = fir.alloca !fir.type<_QMmTt{p:!fir.box>,i:i32}> {bindc_name = "loc", uniq_name = "_QMmFtestEloc"} %17 = fir.declare %16 {test.ptr = "loc.fir", uniq_name = "_QMmFtestEloc"} : (!fir.ref>,i:i32}>>) -> !fir.ref>,i:i32}>> - %18 = fir.field_index p, !fir.type<_QMmTt{p:!fir.box>,i:i32}> - %19 = fir.coordinate_of %17, %18 {test.ptr="loc%p.fir"} : (!fir.ref>,i:i32}>>, !fir.field) -> !fir.ref>> - %20 = fir.field_index i, !fir.type<_QMmTt{p:!fir.box>,i:i32}> - %21 = fir.coordinate_of %17, %20 {test.ptr="loc%i.fir"} : (!fir.ref>,i:i32}>>, !fir.field) -> !fir.ref + %19 = fir.coordinate_of %17, p {test.ptr="loc%p.fir"} : (!fir.ref>,i:i32}>>) -> !fir.ref>> + %21 = fir.coordinate_of %17, i {test.ptr="loc%i.fir"} : (!fir.ref>,i:i32}>>) -> !fir.ref return } @@ -609,23 +589,17 @@ func.func private @_QMmFparentPtest.fir(%arg0: !fir.ref>,i:i32}>> %10 = fir.declare %9 {test.ptr = "glob.fir", uniq_name = "_QMmEglob"} : (!fir.ref>,i:i32}>>) -> !fir.ref>,i:i32}>> - %11 = fir.field_index p, !fir.type<_QMmTt{p:!fir.box>,i:i32}> - %12 = fir.coordinate_of %10, %11 {test.ptr="glob%p.fir"} : (!fir.ref>,i:i32}>>, !fir.field) -> !fir.ref>> - %13 = fir.field_index i, !fir.type<_QMmTt{p:!fir.box>,i:i32}> - %14 = fir.coordinate_of %10, %13 {test.ptr="glob%i.fir"} : (!fir.ref>,i:i32}>>, !fir.field) -> !fir.ref + %12 = fir.coordinate_of %10, p {test.ptr="glob%p.fir"} : (!fir.ref>,i:i32}>>) -> !fir.ref>> + %14 = fir.coordinate_of %10, i {test.ptr="glob%i.fir"} : (!fir.ref>,i:i32}>>) -> !fir.ref %15 = fir.declare %arg0 dummy_scope %0 {test.ptr = "arg.fir", uniq_name = "_QMmFparentFtestEarg"} : (!fir.ref>,i:i32}>>, !fir.dscope) -> !fir.ref>,i:i32}>> - %16 = fir.field_index p, !fir.type<_QMmTt{p:!fir.box>,i:i32}> - %17 = fir.coordinate_of %15, %16 {test.ptr="arg%p.fir"} : (!fir.ref>,i:i32}>>, !fir.field) -> !fir.ref>> - %18 = fir.field_index i, !fir.type<_QMmTt{p:!fir.box>,i:i32}> - %19 = fir.coordinate_of %15, %18 {test.ptr="arg%i.fir"} : (!fir.ref>,i:i32}>>, !fir.field) -> !fir.ref + %17 = fir.coordinate_of %15, p {test.ptr="arg%p.fir"} : (!fir.ref>,i:i32}>>) -> !fir.ref>> + %19 = fir.coordinate_of %15, i {test.ptr="arg%i.fir"} : (!fir.ref>,i:i32}>>) -> !fir.ref %20 = fir.alloca !fir.type<_QMmTt{p:!fir.box>,i:i32}> {bindc_name = "loc", uniq_name = "_QMmFparentFtestEloc"} %21 = fir.declare %20 {test.ptr = "loc.fir", uniq_name = "_QMmFparentFtestEloc"} : (!fir.ref>,i:i32}>>) -> !fir.ref>,i:i32}>> - %22 = fir.field_index p, !fir.type<_QMmTt{p:!fir.box>,i:i32}> - %23 = fir.coordinate_of %21, %22 {test.ptr="loc%p.fir"} : (!fir.ref>,i:i32}>>, !fir.field) -> !fir.ref>> - %24 = fir.field_index i, !fir.type<_QMmTt{p:!fir.box>,i:i32}> - %25 = fir.coordinate_of %21, %24 {test.ptr="loc%i.fir"} : (!fir.ref>,i:i32}>>, !fir.field) -> !fir.ref + %23 = fir.coordinate_of %21, p {test.ptr="loc%p.fir"} : (!fir.ref>,i:i32}>>) -> !fir.ref>> + %25 = fir.coordinate_of %21, i {test.ptr="loc%i.fir"} : (!fir.ref>,i:i32}>>) -> !fir.ref return } @@ -765,38 +739,26 @@ func.func @_QMmPtest.fir(%arg0: !fir.ref, uniq_name = "_QMmFtestEarg0"} : (!fir.ref>,a:!fir.box>,r:f32}>>, !fir.dscope) -> !fir.ref>,a:!fir.box>,r:f32}>> - %2 = fir.field_index p, !fir.type<_QMmTt{p:!fir.box>,a:!fir.box>,r:f32}> - %3 = fir.coordinate_of %1, %2 {test.ptr="arg0%p.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>, !fir.field) -> !fir.ref>> - %4 = fir.field_index a, !fir.type<_QMmTt{p:!fir.box>,a:!fir.box>,r:f32}> - %5 = fir.coordinate_of %1, %4 {test.ptr="arg0%a.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>, !fir.field) -> !fir.ref>> - %6 = fir.field_index r, !fir.type<_QMmTt{p:!fir.box>,a:!fir.box>,r:f32}> - %7 = fir.coordinate_of %1, %6 {test.ptr="arg0%r.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>, !fir.field) -> !fir.ref + %3 = fir.coordinate_of %1, p {test.ptr="arg0%p.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>) -> !fir.ref>> + %5 = fir.coordinate_of %1, a {test.ptr="arg0%a.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>) -> !fir.ref>> + %7 = fir.coordinate_of %1, r {test.ptr="arg0%r.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>) -> !fir.ref %8 = fir.declare %arg1 dummy_scope %0 {test.ptr="arg1.fir", fortran_attrs = #fir.var_attrs, uniq_name = "_QMmFtestEarg1"} : (!fir.ref>,a:!fir.box>,r:f32}>>, !fir.dscope) -> !fir.ref>,a:!fir.box>,r:f32}>> - %9 = fir.field_index p, !fir.type<_QMmTt{p:!fir.box>,a:!fir.box>,r:f32}> - %10 = fir.coordinate_of %8, %9 {test.ptr="arg1%p.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>, !fir.field) -> !fir.ref>> - %11 = fir.field_index a, !fir.type<_QMmTt{p:!fir.box>,a:!fir.box>,r:f32}> - %12 = fir.coordinate_of %8, %11 {test.ptr="arg1%a.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>, !fir.field) -> !fir.ref>> - %13 = fir.field_index r, !fir.type<_QMmTt{p:!fir.box>,a:!fir.box>,r:f32}> - %14 = fir.coordinate_of %8, %13 {test.ptr="arg1%r.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>, !fir.field) -> !fir.ref + %10 = fir.coordinate_of %8, p {test.ptr="arg1%p.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>) -> !fir.ref>> + %12 = fir.coordinate_of %8, a {test.ptr="arg1%a.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>) -> !fir.ref>> + %14 = fir.coordinate_of %8, r {test.ptr="arg1%r.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>) -> !fir.ref %15 = fir.address_of(@_QMmEglob0) : !fir.ref>,a:!fir.box>,r:f32}>> %16 = fir.declare %15 {test.ptr="glob0.fir", fortran_attrs = #fir.var_attrs, uniq_name = "_QMmEglob0"} : (!fir.ref>,a:!fir.box>,r:f32}>>) -> !fir.ref>,a:!fir.box>,r:f32}>> - %17 = fir.field_index p, !fir.type<_QMmTt{p:!fir.box>,a:!fir.box>,r:f32}> - %18 = fir.coordinate_of %16, %17 {test.ptr="glob0%p.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>, !fir.field) -> !fir.ref>> - %19 = fir.field_index a, !fir.type<_QMmTt{p:!fir.box>,a:!fir.box>,r:f32}> - %20 = fir.coordinate_of %16, %19 {test.ptr="glob0%a.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>, !fir.field) -> !fir.ref>> - %21 = fir.field_index r, !fir.type<_QMmTt{p:!fir.box>,a:!fir.box>,r:f32}> - %22 = fir.coordinate_of %16, %21 {test.ptr="glob0%r.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>, !fir.field) -> !fir.ref + %18 = fir.coordinate_of %16, p {test.ptr="glob0%p.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>) -> !fir.ref>> + %20 = fir.coordinate_of %16, a {test.ptr="glob0%a.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>) -> !fir.ref>> + %22 = fir.coordinate_of %16, r {test.ptr="glob0%r.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>) -> !fir.ref %23 = fir.address_of(@_QMmEglob1) : !fir.ref>,a:!fir.box>,r:f32}>> %24 = fir.declare %23 {test.ptr="glob1.fir", fortran_attrs = #fir.var_attrs, uniq_name = "_QMmEglob1"} : (!fir.ref>,a:!fir.box>,r:f32}>>) -> !fir.ref>,a:!fir.box>,r:f32}>> - %25 = fir.field_index p, !fir.type<_QMmTt{p:!fir.box>,a:!fir.box>,r:f32}> - %26 = fir.coordinate_of %24, %25 {test.ptr="glob1%p.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>, !fir.field) -> !fir.ref>> - %27 = fir.field_index a, !fir.type<_QMmTt{p:!fir.box>,a:!fir.box>,r:f32}> - %28 = fir.coordinate_of %24, %27 {test.ptr="glob1%a.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>, !fir.field) -> !fir.ref>> - %29 = fir.field_index r, !fir.type<_QMmTt{p:!fir.box>,a:!fir.box>,r:f32}> - %30 = fir.coordinate_of %24, %29 {test.ptr="glob1%r.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>, !fir.field) -> !fir.ref + %26 = fir.coordinate_of %24, p {test.ptr="glob1%p.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>) -> !fir.ref>> + %28 = fir.coordinate_of %24, a {test.ptr="glob1%a.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>) -> !fir.ref>> + %30 = fir.coordinate_of %24, r {test.ptr="glob1%r.fir"} : (!fir.ref>,a:!fir.box>,r:f32}>>) -> !fir.ref return } diff --git a/flang/test/Fir/CUDA/cuda-abstract-result.mlir b/flang/test/Fir/CUDA/cuda-abstract-result.mlir index 8c59487ca5cd5..915907762a979 100644 --- a/flang/test/Fir/CUDA/cuda-abstract-result.mlir +++ b/flang/test/Fir/CUDA/cuda-abstract-result.mlir @@ -10,23 +10,19 @@ gpu.module @test { %22 = fir.declare %21 {uniq_name = "_QMinterval_mFtest1Ec"} : (!fir.ref>) -> !fir.ref> %23 = fir.alloca i32 {bindc_name = "warpsize", uniq_name = "_QMcudadeviceECwarpsize"} %24 = fir.declare %23 {uniq_name = "_QMcudadeviceECwarpsize"} : (!fir.ref) -> !fir.ref - %25 = fir.field_index inf, !fir.type<_QMinterval_mTinterval{inf:f32,sup:f32}> - %26 = fir.coordinate_of %19, %25 : (!fir.ref>, !fir.field) -> !fir.ref + %26 = fir.coordinate_of %19, inf : (!fir.ref>) -> !fir.ref %27 = fir.load %20 : !fir.ref %28 = arith.negf %27 fastmath : f32 %29 = fir.load %26 : !fir.ref %30 = fir.call @__fadd_rd(%29, %28) proc_attrs fastmath : (f32, f32) -> f32 - %31 = fir.field_index inf, !fir.type<_QMinterval_mTinterval{inf:f32,sup:f32}> - %32 = fir.coordinate_of %22, %31 : (!fir.ref>, !fir.field) -> !fir.ref + %32 = fir.coordinate_of %22, inf : (!fir.ref>) -> !fir.ref fir.store %30 to %32 : !fir.ref - %33 = fir.field_index sup, !fir.type<_QMinterval_mTinterval{inf:f32,sup:f32}> - %34 = fir.coordinate_of %19, %33 : (!fir.ref>, !fir.field) -> !fir.ref + %34 = fir.coordinate_of %19, sup : (!fir.ref>) -> !fir.ref %35 = fir.load %20 : !fir.ref %36 = arith.negf %35 fastmath : f32 %37 = fir.load %34 : !fir.ref %38 = fir.call @__fadd_ru(%37, %36) proc_attrs fastmath : (f32, f32) -> f32 - %39 = fir.field_index sup, !fir.type<_QMinterval_mTinterval{inf:f32,sup:f32}> - %40 = fir.coordinate_of %22, %39 : (!fir.ref>, !fir.field) -> !fir.ref + %40 = fir.coordinate_of %22, sup : (!fir.ref>) -> !fir.ref fir.store %38 to %40 : !fir.ref %41 = fir.load %22 : !fir.ref> gpu.return %41 : !fir.type<_QMinterval_mTinterval{inf:f32,sup:f32}> diff --git a/flang/test/Fir/boxproc-2.fir b/flang/test/Fir/boxproc-2.fir index 963dfa03663cb..e0578d2dc104c 100644 --- a/flang/test/Fir/boxproc-2.fir +++ b/flang/test/Fir/boxproc-2.fir @@ -22,12 +22,10 @@ func.func private @test6(!fir.tdesc) -> f32>, %arg1: !fir.ref) { %0 = fir.alloca !fir.type<_QFtestTmatrix{element:!fir.array<2x2xf32>,solve:!fir.boxproc<() -> ()>}> - %1 = fir.field_index solve, !fir.type<_QFtestTmatrix{element:!fir.array<2x2xf32>,solve:!fir.boxproc<() -> ()>}> - %2 = fir.coordinate_of %0, %1 : (!fir.ref,solve:!fir.boxproc<() -> ()>}>>, !fir.field) -> !fir.ref ()>> + %2 = fir.coordinate_of %0, solve : (!fir.ref,solve:!fir.boxproc<() -> ()>}>>) -> !fir.ref ()>> %3 = fir.convert %arg0 : (!fir.boxproc<(!fir.ref) -> f32>) -> !fir.boxproc<() -> ()> fir.store %3 to %2 : !fir.ref ()>> - %4 = fir.field_index solve, !fir.type<_QFtestTmatrix{element:!fir.array<2x2xf32>,solve:!fir.boxproc<() -> ()>}> - %5 = fir.coordinate_of %0, %4 : (!fir.ref,solve:!fir.boxproc<() -> ()>}>>, !fir.field) -> !fir.ref ()>> + %5 = fir.coordinate_of %0, solve : (!fir.ref,solve:!fir.boxproc<() -> ()>}>>) -> !fir.ref ()>> %6 = fir.load %5 : !fir.ref ()>> %7 = fir.convert %6 : (!fir.boxproc<() -> ()>) -> !fir.boxproc<(!fir.ref) -> f32> %8 = fir.box_addr %7 : (!fir.boxproc<(!fir.ref) -> f32>) -> ((!fir.ref) -> f32) @@ -35,12 +33,10 @@ func.func @proc_pointer_component(%arg0 : !fir.boxproc<(!fir.ref) -> f32>, return // CHECK: %[[VAL_2:.*]] = fir.alloca !fir.type<_QFtestTmatrixUnboxProc{element:!fir.array<2x2xf32>,solve:() -> ()}> -// CHECK: %[[VAL_3:.*]] = fir.field_index solve, !fir.type<_QFtestTmatrixUnboxProc{element:!fir.array<2x2xf32>,solve:() -> ()}> -// CHECK: %[[VAL_4:.*]] = fir.coordinate_of %[[VAL_2]], %[[VAL_3]] : (!fir.ref,solve:() -> ()}>>, !fir.field) -> !fir.ref<() -> ()> +// CHECK: %[[VAL_4:.*]] = fir.coordinate_of %[[VAL_2]], solve : (!fir.ref,solve:() -> ()}>>) -> !fir.ref<() -> ()> // CHECK: %[[VAL_5:.*]] = fir.convert %[[VAL_0]] : ((!fir.ref) -> f32) -> (() -> ()) // CHECK: fir.store %[[VAL_5]] to %[[VAL_4]] : !fir.ref<() -> ()> -// CHECK: %[[VAL_6:.*]] = fir.field_index solve, !fir.type<_QFtestTmatrixUnboxProc{element:!fir.array<2x2xf32>,solve:() -> ()}> -// CHECK: %[[VAL_7:.*]] = fir.coordinate_of %[[VAL_2]], %[[VAL_6]] : (!fir.ref,solve:() -> ()}>>, !fir.field) -> !fir.ref<() -> ()> +// CHECK: %[[VAL_7:.*]] = fir.coordinate_of %[[VAL_2]], solve : (!fir.ref,solve:() -> ()}>>) -> !fir.ref<() -> ()> // CHECK: %[[VAL_8:.*]] = fir.load %[[VAL_7]] : !fir.ref<() -> ()> // CHECK: %[[VAL_9:.*]] = fir.convert %[[VAL_8]] : (() -> ()) -> ((!fir.ref) -> f32) // CHECK: %[[VAL_10:.*]] = fir.convert %[[VAL_9]] : ((!fir.ref) -> f32) -> ((!fir.ref) -> f32) diff --git a/flang/test/Transforms/omp-map-info-finalization.fir b/flang/test/Transforms/omp-map-info-finalization.fir index a7254bcddd523..15ef58ef2bacf 100644 --- a/flang/test/Transforms/omp-map-info-finalization.fir +++ b/flang/test/Transforms/omp-map-info-finalization.fir @@ -63,15 +63,11 @@ func.func @test_derived_type_map_operand_and_block_addition(%arg0: !fir.ref}>>) { %0 = fir.declare %arg0 {uniq_name = "_QFmaptype_derived_nested_explicit_multiple_membersEsa"} : (!fir.ref}>>) -> !fir.ref}>> - %1 = fir.field_index n, !fir.type<_QFmaptype_derived_nested_explicit_multiple_membersTscalar_and_array{r:f32,n:!fir.type<_QFmaptype_derived_nested_explicit_multiple_membersTnested{i:i32,r:f32}>}> - %2 = fir.coordinate_of %0, %1 : (!fir.ref}>>, !fir.field) -> !fir.ref> - %3 = fir.field_index i, !fir.type<_QFmaptype_derived_nested_explicit_multiple_membersTnested{i:i32,r:f32}> - %4 = fir.coordinate_of %2, %3 : (!fir.ref>, !fir.field) -> !fir.ref + %2 = fir.coordinate_of %0, n : (!fir.ref}>>) -> !fir.ref> + %4 = fir.coordinate_of %2, i : (!fir.ref>) -> !fir.ref %5 = omp.map.info var_ptr(%4 : !fir.ref, i32) map_clauses(tofrom) capture(ByRef) -> !fir.ref {name = "sa%n%i"} - %6 = fir.field_index n, !fir.type<_QFmaptype_derived_nested_explicit_multiple_membersTscalar_and_array{r:f32,n:!fir.type<_QFmaptype_derived_nested_explicit_multiple_membersTnested{i:i32,r:f32}>}> - %7 = fir.coordinate_of %0, %6 : (!fir.ref}>>, !fir.field) -> !fir.ref> - %8 = fir.field_index r, !fir.type<_QFmaptype_derived_nested_explicit_multiple_membersTnested{i:i32,r:f32}> - %9 = fir.coordinate_of %7, %8 : (!fir.ref>, !fir.field) -> !fir.ref + %7 = fir.coordinate_of %0, n : (!fir.ref}>>) -> !fir.ref> + %9 = fir.coordinate_of %7, r : (!fir.ref>) -> !fir.ref %10 = omp.map.info var_ptr(%9 : !fir.ref, f32) map_clauses(tofrom) capture(ByRef) -> !fir.ref {name = "sa%n%r"} %11 = omp.map.info var_ptr(%0 : !fir.ref}>>, !fir.type<_QFmaptype_derived_nested_explicit_multiple_membersTscalar_and_array{r:f32,n:!fir.type<_QFmaptype_derived_nested_explicit_multiple_membersTnested{i:i32,r:f32}>}>) map_clauses(tofrom) capture(ByRef) members(%5, %10 : [1,0], [1,1] : !fir.ref, !fir.ref) -> !fir.ref}>> {name = "sa", partial_map = true} omp.target map_entries(%11 -> %arg1 : !fir.ref}>>) { @@ -101,7 +97,7 @@ func.func @dtype_alloca_op_block_add(%arg0: !fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32}>>, index) -> !fir.ref>>> + %7 = fir.coordinate_of %0#0, array_j : (!fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32}>>) -> !fir.ref>>> %8 = omp.map.info var_ptr(%7 : !fir.ref>>>, !fir.box>>) map_clauses(tofrom) capture(ByRef) bounds(%6) -> !fir.ref>>> {name = "one_l%array_j"} %9 = omp.map.info var_ptr(%0#0 : !fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32}>>, !fir.type<_QFtest_derived_type_allocatable_map_operand_and_block_additionTone_layer{i:f32,scalar:!fir.box>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32}>) map_clauses(tofrom) capture(ByRef) members(%8 : [4] : !fir.ref>>>) -> !fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32}>> {name = "one_l", partial_map = true} omp.target map_entries(%9 -> %arg1 : !fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32}>>) { @@ -113,7 +109,7 @@ func.func @dtype_alloca_op_block_add(%arg0: !fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32}]]>>) { // CHECK: %[[ALLOCA:.*]]:2 = hlfir.declare %[[ARG0]] {{.*}} : (!fir.ref<[[REC_TY]]>>) -> (!fir.ref<[[REC_TY]]>>, !fir.ref<[[REC_TY]]>>) // CHECK: %[[BOUNDS:.*]] = omp.map.bounds lower_bound(%{{.*}} : index) upper_bound(%{{.*}} : index) extent(%{{.*}} : index) stride(%{{.*}} : index) start_idx(%{{.*}} : index) {stride_in_bytes = true} -// CHECK: %[[MEMBER_COORD:.*]] = fir.coordinate_of %[[ALLOCA]]#0, %{{.*}} : (!fir.ref<[[REC_TY]]>>, index) -> !fir.ref>>> +// CHECK: %[[MEMBER_COORD:.*]] = fir.coordinate_of %[[ALLOCA]]#0, array_j : (!fir.ref<[[REC_TY]]>>) -> !fir.ref>>> // CHECK: %[[MEMBER_BASE_ADDR:.*]] = fir.box_offset %[[MEMBER_COORD:.*]] base_addr : (!fir.ref>>>) -> !fir.llvm_ptr>> // CHECK: %[[MAP_MEMBER_BASE_ADDR:.*]] = omp.map.info var_ptr(%[[MEMBER_COORD]] : !fir.ref>>>, i32) var_ptr_ptr(%[[MEMBER_BASE_ADDR]] : !fir.llvm_ptr>>) map_clauses(tofrom) capture(ByRef) bounds(%[[BOUNDS]]) -> !fir.llvm_ptr>> {{.*}} // CHECK: %[[MAP_MEMBER_DESCRIPTOR:.*]] = omp.map.info var_ptr(%[[MEMBER_COORD]] : !fir.ref>>>, !fir.box>>) map_clauses(to) capture(ByRef) -> !fir.ref>>> {name = "one_l%array_j"} @@ -137,12 +133,10 @@ func.func @alloca_dtype_map_op_block_add(%arg0 : !fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32}>>>> - %c4 = arith.constant 4 : index - %10 = fir.coordinate_of %9, %c4 : (!fir.box>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32}>>>, index) -> !fir.ref>>> + %10 = fir.coordinate_of %9, array_j : (!fir.box>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32}>>>) -> !fir.ref>>> %11 = omp.map.info var_ptr(%10 : !fir.ref>>>, !fir.box>>) map_clauses(tofrom) capture(ByRef) bounds(%8) -> !fir.ref>>> {name = "one_l%array_j"} %12 = fir.load %0#0 : !fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32}>>>> - %c5 = arith.constant 5 : index - %13 = fir.coordinate_of %12, %c5 : (!fir.box>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32}>>>, index) -> !fir.ref + %13 = fir.coordinate_of %12, k : (!fir.box>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32}>>>) -> !fir.ref %14 = omp.map.info var_ptr(%13 : !fir.ref, i32) map_clauses(tofrom) capture(ByRef) -> !fir.ref {name = "one_l%k"} %15 = omp.map.info var_ptr(%0#1 : !fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32}>>>>, !fir.box>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32}>>>) map_clauses(tofrom) capture(ByRef) members(%11, %14 : [4], [5] : !fir.ref>>>, !fir.ref) -> !fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32}>>>> {name = "one_l", partial_map = true} omp.target map_entries(%15 -> %arg1 : !fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32}>>>>) { @@ -155,12 +149,12 @@ func.func @alloca_dtype_map_op_block_add(%arg0 : !fir.ref, uniq_name = "_QFtest_allocatable_derived_type_map_operand_and_block_additionEone_l"} : (!fir.ref>>>) -> (!fir.ref>>>, !fir.ref>>>) // CHECK: %[[BOUNDS:.*]] = omp.map.bounds lower_bound(%{{.*}} : index) upper_bound(%{{.*}} : index) extent(%{{.*}}#1 : index) stride(%{{.*}}#2 : index) start_idx(%{{.*}}#0 : index) {stride_in_bytes = true} // CHECK: %[[LOAD_ALLOCA:.*]] = fir.load %[[ALLOCA]]#0 : !fir.ref>>> -// CHECK: %[[ALLOCATABLE_MEMBER_COORD:.*]] = fir.coordinate_of %[[LOAD_ALLOCA]], %{{.*}} : (!fir.box>>, index) -> !fir.ref>>> +// CHECK: %[[ALLOCATABLE_MEMBER_COORD:.*]] = fir.coordinate_of %[[LOAD_ALLOCA]], array_j : (!fir.box>>) -> !fir.ref>>> // CHECK: %[[ALLOCATABLE_MEMBER_BASE_ADDR:.*]] = fir.box_offset %[[ALLOCATABLE_MEMBER_COORD]] base_addr : (!fir.ref>>>) -> !fir.llvm_ptr>> // CHECK: %[[MAP_ALLOCA_MEMBER_BASE_ADDR:.*]] = omp.map.info var_ptr(%[[ALLOCATABLE_MEMBER_COORD]] : !fir.ref>>>, i32) var_ptr_ptr(%[[ALLOCATABLE_MEMBER_BASE_ADDR]] : !fir.llvm_ptr>>) map_clauses(tofrom) capture(ByRef) bounds(%[[BOUNDS]]) -> !fir.llvm_ptr>> {{.*}} // CHECK: %[[MAP_ALLOCA_MEMBER_DESCRIPTOR:.*]] = omp.map.info var_ptr(%[[ALLOCATABLE_MEMBER_COORD]] : !fir.ref>>>, !fir.box>>) map_clauses(to) capture(ByRef) -> !fir.ref>>> {{.*}} // CHECK: %[[LOAD_ALLOCA2:.*]] = fir.load %[[ALLOCA]]#0 : !fir.ref>>> -// CHECK: %[[REGULAR_MEMBER_COORD:.*]] = fir.coordinate_of %[[LOAD_ALLOCA2]], %{{.*}} : (!fir.box>>, index) -> !fir.ref +// CHECK: %[[REGULAR_MEMBER_COORD:.*]] = fir.coordinate_of %[[LOAD_ALLOCA2]], k : (!fir.box>>) -> !fir.ref // CHECK: %[[MAP_REGULAR_MEMBER:.*]] = omp.map.info var_ptr(%[[REGULAR_MEMBER_COORD]] : !fir.ref, i32) map_clauses(tofrom) capture(ByRef) -> !fir.ref {{.*}} // CHECK: %[[ALLOCATABLE_PARENT_BASE_ADDR:.*]] = fir.box_offset %[[ALLOCA]]#1 base_addr : (!fir.ref>>>) -> !fir.llvm_ptr>> // CHECK: %[[MAP_ALLOCA_PARENT_BASE_ADDR:.*]] = omp.map.info var_ptr(%[[ALLOCA]]#1 : !fir.ref>>>, !fir.type<[[REC_TY]]>) var_ptr_ptr(%[[ALLOCATABLE_PARENT_BASE_ADDR]] : !fir.llvm_ptr>>) map_clauses(tofrom) capture(ByRef) -> !fir.llvm_ptr>> {{.*}} @@ -185,14 +179,13 @@ func.func @alloca_dtype_map_op_block_add(%arg0 : !fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32,nest:!fir.type<_QFtest_alloca_nested_derived_type_map_operand_and_block_additionTmiddle_layer{i:f32,array_i:!fir.array<10xi32>,array_k:!fir.box>>,k:i32}>}>>>> %c6 = arith.constant 6 : index - %11 = fir.coordinate_of %10, %c6 : (!fir.box>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32,nest:!fir.type<_QFtest_alloca_nested_derived_type_map_operand_and_block_additionTmiddle_layer{i:f32,array_i:!fir.array<10xi32>,array_k:!fir.box>>,k:i32}>}>>>, index) -> !fir.ref,array_k:!fir.box>>,k:i32}>> + %11 = fir.coordinate_of %10, nest : (!fir.box>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32,nest:!fir.type<_QFtest_alloca_nested_derived_type_map_operand_and_block_additionTmiddle_layer{i:f32,array_i:!fir.array<10xi32>,array_k:!fir.box>>,k:i32}>}>>>) -> !fir.ref,array_k:!fir.box>>,k:i32}>> %c2_0 = arith.constant 2 : index - %12 = fir.coordinate_of %11, %c2_0 : (!fir.ref,array_k:!fir.box>>,k:i32}>>, index) -> !fir.ref>>> + %12 = fir.coordinate_of %11, array_k : (!fir.ref,array_k:!fir.box>>,k:i32}>>) -> !fir.ref>>> %13 = omp.map.info var_ptr(%12 : !fir.ref>>>, !fir.box>>) map_clauses(tofrom) capture(ByRef) bounds(%9) -> !fir.ref>>> {name = "one_l%nest%array_k"} %14 = fir.load %0#0 : !fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32,nest:!fir.type<_QFtest_alloca_nested_derived_type_map_operand_and_block_additionTmiddle_layer{i:f32,array_i:!fir.array<10xi32>,array_k:!fir.box>>,k:i32}>}>>>> - %15 = fir.coordinate_of %14, %c6 : (!fir.box>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32,nest:!fir.type<_QFtest_alloca_nested_derived_type_map_operand_and_block_additionTmiddle_layer{i:f32,array_i:!fir.array<10xi32>,array_k:!fir.box>>,k:i32}>}>>>, index) -> !fir.ref,array_k:!fir.box>>,k:i32}>> - %c3 = arith.constant 3 : index - %16 = fir.coordinate_of %15, %c3 : (!fir.ref,array_k:!fir.box>>,k:i32}>>, index) -> !fir.ref + %15 = fir.coordinate_of %14, nest : (!fir.box>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32,nest:!fir.type<_QFtest_alloca_nested_derived_type_map_operand_and_block_additionTmiddle_layer{i:f32,array_i:!fir.array<10xi32>,array_k:!fir.box>>,k:i32}>}>>>) -> !fir.ref,array_k:!fir.box>>,k:i32}>> + %16 = fir.coordinate_of %15, k : (!fir.ref,array_k:!fir.box>>,k:i32}>>) -> !fir.ref %17 = omp.map.info var_ptr(%16 : !fir.ref, i32) map_clauses(tofrom) capture(ByRef) -> !fir.ref {name = "one_l%nest%k"} %18 = omp.map.info var_ptr(%0#1 : !fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32,nest:!fir.type<_QFtest_alloca_nested_derived_type_map_operand_and_block_additionTmiddle_layer{i:f32,array_i:!fir.array<10xi32>,array_k:!fir.box>>,k:i32}>}>>>>, !fir.box>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32,nest:!fir.type<_QFtest_alloca_nested_derived_type_map_operand_and_block_additionTmiddle_layer{i:f32,array_i:!fir.array<10xi32>,array_k:!fir.box>>,k:i32}>}>>>) map_clauses(tofrom) capture(ByRef) members(%13, %17 : [6,2], [6,3] : !fir.ref>>>, !fir.ref) -> !fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32,nest:!fir.type<_QFtest_alloca_nested_derived_type_map_operand_and_block_additionTmiddle_layer{i:f32,array_i:!fir.array<10xi32>,array_k:!fir.box>>,k:i32}>}>>>> {name = "one_l", partial_map = true} omp.target map_entries(%18 -> %arg1 : !fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32,nest:!fir.type<_QFtest_alloca_nested_derived_type_map_operand_and_block_additionTmiddle_layer{i:f32,array_i:!fir.array<10xi32>,array_k:!fir.box>>,k:i32}>}>>>>) { @@ -205,14 +198,14 @@ func.func @alloca_dtype_map_op_block_add(%arg0 : !fir.ref>>>) -> (!fir.ref>>>, !fir.ref>>>) // CHECK: %[[BOUNDS:.*]] = omp.map.bounds lower_bound(%{{.*}} : index) upper_bound(%{{.*}} : index) extent(%{{.*}} : index) stride(%{{.*}} : index) start_idx(%{{.*}} : index) {stride_in_bytes = true} // CHECK: %[[ALLOCA_LOAD:.*]] = fir.load %[[ALLOCA]]#0 : !fir.ref>>> -// CHECK: %[[INTERMEDIATE_DTYPE_NESTED_MEMBER:.*]] = fir.coordinate_of %[[ALLOCA_LOAD]], %{{.*}} : (!fir.box>>, index) -> !fir.ref,array_k:!fir.box>>,k:i32}]]>> -// CHECK: %[[NESTED_ALLOCA_MEMBER:.*]] = fir.coordinate_of %[[INTERMEDIATE_DTYPE_NESTED_MEMBER]], %{{.*}} : (!fir.ref>, index) -> !fir.ref>>> +// CHECK: %[[INTERMEDIATE_DTYPE_NESTED_MEMBER:.*]] = fir.coordinate_of %[[ALLOCA_LOAD]], nest : (!fir.box>>) -> !fir.ref,array_k:!fir.box>>,k:i32}]]>> +// CHECK: %[[NESTED_ALLOCA_MEMBER:.*]] = fir.coordinate_of %[[INTERMEDIATE_DTYPE_NESTED_MEMBER]], array_k : (!fir.ref>) -> !fir.ref>>> // CHECK: %[[NESTED_ALLOCA_MEMBER_BASE_ADDR:.*]] = fir.box_offset %[[NESTED_ALLOCA_MEMBER]] base_addr : (!fir.ref>>>) -> !fir.llvm_ptr>> // CHECK: %[[MAP_NESTED_ALLOCA_MEMBER_BASE_ADDR:.*]] = omp.map.info var_ptr(%[[NESTED_ALLOCA_MEMBER]] : !fir.ref>>>, i32) var_ptr_ptr(%[[NESTED_ALLOCA_MEMBER_BASE_ADDR]] : !fir.llvm_ptr>>) map_clauses(tofrom) capture(ByRef) bounds(%[[BOUNDS]]) -> !fir.llvm_ptr>> {{.*}} // CHECK: %[[MAP_NESTED_ALLOCA_MEMBER:.*]] = omp.map.info var_ptr(%[[NESTED_ALLOCA_MEMBER]] : !fir.ref>>>, !fir.box>>) map_clauses(to) capture(ByRef) -> !fir.ref>>> {{.*}} // CHECK: %[[ALLOCA_LOAD2:.*]] = fir.load %[[ALLOCA]]#0 : !fir.ref>>> -// CHECK: %[[INTERMEDIATE_DTYPE_NESTED_MEMBER2:.*]] = fir.coordinate_of %[[ALLOCA_LOAD2]], %{{.*}} : (!fir.box>>, index) -> !fir.ref> -// CHECK: %[[NESTED_REGULAR_MEMBER:.*]] = fir.coordinate_of %[[INTERMEDIATE_DTYPE_NESTED_MEMBER2]], %{{.*}} : (!fir.ref>, index) -> !fir.ref +// CHECK: %[[INTERMEDIATE_DTYPE_NESTED_MEMBER2:.*]] = fir.coordinate_of %[[ALLOCA_LOAD2]], nest : (!fir.box>>) -> !fir.ref> +// CHECK: %[[NESTED_REGULAR_MEMBER:.*]] = fir.coordinate_of %[[INTERMEDIATE_DTYPE_NESTED_MEMBER2]], k : (!fir.ref>) -> !fir.ref // CHECK: %[[MAP_NESTED_REGULAR_MEMBER:.*]] = omp.map.info var_ptr(%[[NESTED_REGULAR_MEMBER:.*]] : !fir.ref, i32) map_clauses(tofrom) capture(ByRef) -> !fir.ref {{.*}} // CHECK: %[[ALLOCATABLE_PARENT_BASE_ADDR:.*]] = fir.box_offset %[[ALLOCA]]#1 base_addr : (!fir.ref>>>) -> !fir.llvm_ptr>> // CHECK: %[[MAP_ALLOCATABLE_PARENT_BASE_ADDR:.*]] = omp.map.info var_ptr(%[[ALLOCA]]#1 : !fir.ref>>>, !fir.type<[[REC_TY]]>) var_ptr_ptr(%[[ALLOCATABLE_PARENT_BASE_ADDR]] : !fir.llvm_ptr>>) map_clauses(tofrom) capture(ByRef) -> !fir.llvm_ptr>> {{.*}} @@ -235,9 +228,8 @@ func.func @alloca_dtype_map_op_block_add(%arg0 : !fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32,nest:!fir.type<_QFtest_nested_derived_type_alloca_map_operand_and_block_additionTmiddle_layer{i:f32,array_i:!fir.array<10xi32>,array_k:!fir.box>>,k:i32}>}>>, index) -> !fir.ref,array_k:!fir.box>>,k:i32}>> - %c2_0 = arith.constant 2 : index - %9 = fir.coordinate_of %8, %c2_0 : (!fir.ref,array_k:!fir.box>>,k:i32}>>, index) -> !fir.ref>>> + %8 = fir.coordinate_of %0#0, nest: (!fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32,nest:!fir.type<_QFtest_nested_derived_type_alloca_map_operand_and_block_additionTmiddle_layer{i:f32,array_i:!fir.array<10xi32>,array_k:!fir.box>>,k:i32}>}>>) -> !fir.ref,array_k:!fir.box>>,k:i32}>> + %9 = fir.coordinate_of %8, array_k : (!fir.ref,array_k:!fir.box>>,k:i32}>>) -> !fir.ref>>> %10 = omp.map.info var_ptr(%9 : !fir.ref>>>, !fir.box>>) map_clauses(tofrom) capture(ByRef) bounds(%7) -> !fir.ref>>> {name = "one_l%nest%array_k"} %11 = omp.map.info var_ptr(%0#0 : !fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32,nest:!fir.type<_QFtest_nested_derived_type_alloca_map_operand_and_block_additionTmiddle_layer{i:f32,array_i:!fir.array<10xi32>,array_k:!fir.box>>,k:i32}>}>>, !fir.type<_QFtest_nested_derived_type_alloca_map_operand_and_block_additionTtop_layer{i:f32,scalar:!fir.box>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32,nest:!fir.type<_QFtest_nested_derived_type_alloca_map_operand_and_block_additionTmiddle_layer{i:f32,array_i:!fir.array<10xi32>,array_k:!fir.box>>,k:i32}>}>) map_clauses(tofrom) capture(ByRef) members(%10 : [6,2] : !fir.ref>>>) -> !fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32,nest:!fir.type<_QFtest_nested_derived_type_alloca_map_operand_and_block_additionTmiddle_layer{i:f32,array_i:!fir.array<10xi32>,array_k:!fir.box>>,k:i32}>}>> {name = "one_l", partial_map = true} omp.target map_entries(%11 -> %arg1 : !fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32,nest:!fir.type<_QFtest_nested_derived_type_alloca_map_operand_and_block_additionTmiddle_layer{i:f32,array_i:!fir.array<10xi32>,array_k:!fir.box>>,k:i32}>}>>) { @@ -249,8 +241,8 @@ func.func @alloca_dtype_map_op_block_add(%arg0 : !fir.ref>,array_i:!fir.array<10xi32>,j:f32,array_j:!fir.box>>,k:i32,nest:!fir.type<_QFtest_nested_derived_type_alloca_map_operand_and_block_additionTmiddle_layer{i:f32,array_i:!fir.array<10xi32>,array_k:!fir.box>>,k:i32}>}]]>>) { // CHECK: %[[ALLOCA:.*]]:2 = hlfir.declare %[[ARG0]] {{.*}} : (!fir.ref>) -> (!fir.ref>, !fir.ref>) // CHECK: %[[BOUNDS:.*]] = omp.map.bounds lower_bound(%{{.*}} : index) upper_bound(%{{.*}} : index) extent(%{{.*}} : index) stride(%{{.*}} : index) start_idx(%{{.*}} : index) {stride_in_bytes = true} -// CHECK: %[[NESTED_DTYPE_COORD:.*]] = fir.coordinate_of %[[ALLOCA]]#0, %{{.*}} : (!fir.ref>, index) -> !fir.ref,array_k:!fir.box>>,k:i32}]]>> -// CHECK: %[[ALLOCATABLE_MEMBER:.*]] = fir.coordinate_of %[[NESTED_DTYPE_COORD]], %{{.*}} : (!fir.ref>, index) -> !fir.ref>>> +// CHECK: %[[NESTED_DTYPE_COORD:.*]] = fir.coordinate_of %[[ALLOCA]]#0, nest : (!fir.ref>) -> !fir.ref,array_k:!fir.box>>,k:i32}]]>> +// CHECK: %[[ALLOCATABLE_MEMBER:.*]] = fir.coordinate_of %[[NESTED_DTYPE_COORD]], array_k : (!fir.ref>) -> !fir.ref>>> // CHECK: %[[ALLOCATABLE_MEMBER_BASE_ADDR:.*]] = fir.box_offset %[[ALLOCATABLE_MEMBER]] base_addr : (!fir.ref>>>) -> !fir.llvm_ptr>> // CHECK: %[[MAP_ALLOCATABLE_MEMBER_BASE_ADDR:.*]] = omp.map.info var_ptr(%[[ALLOCATABLE_MEMBER]] : !fir.ref>>>, i32) var_ptr_ptr(%[[ALLOCATABLE_MEMBER_BASE_ADDR]] : !fir.llvm_ptr>>) map_clauses(tofrom) capture(ByRef) bounds(%[[BOUNDS]]) -> !fir.llvm_ptr>> {{.*}} // CHECK: %[[MAP_ALLOCATABLE_MEMBER_DESCRIPTOR:.*]] = omp.map.info var_ptr(%[[ALLOCATABLE_MEMBER]] : !fir.ref>>>, !fir.box>>) map_clauses(to) capture(ByRef) -> !fir.ref>>> {{.*}} @@ -263,7 +255,7 @@ func.func @alloca_dtype_map_op_block_add(%arg0 : !fir.ref>>,vertexy:!fir.box>>}>>>>,array_i:!fir.array<10xi32>}>>) -> (!fir.ref>>,vertexy:!fir.box>>}>>>>,array_i:!fir.array<10xi32>}>>, !fir.ref>>,vertexy:!fir.box>>}>>>>,array_i:!fir.array<10xi32>}>>) %c1_15 = arith.constant 1 : index %1 = omp.map.bounds lower_bound(%c1_15 : index) upper_bound(%c1_15 : index) extent(%c1_15 : index) stride(%c1_15 : index) start_idx(%c1_15 : index) {stride_in_bytes = true} - %2 = fir.coordinate_of %0#0, %c1_15 : (!fir.ref>>,vertexy:!fir.box>>}>>>>,array_i:!fir.array<10xi32>}>>, index) -> !fir.ref>>,vertexy:!fir.box>>}>>>>> + %2 = fir.coordinate_of %0#0, vertexes : (!fir.ref>>,vertexy:!fir.box>>}>>>>,array_i:!fir.array<10xi32>}>>) -> !fir.ref>>,vertexy:!fir.box>>}>>>>> %3 = omp.map.bounds lower_bound(%c1_15 : index) upper_bound(%c1_15 : index) extent(%c1_15 : index) stride(%c1_15 : index) start_idx(%c1_15 : index) {stride_in_bytes = true} %4 = omp.map.info var_ptr(%2 : !fir.ref>>,vertexy:!fir.box>>}>>>>>, !fir.box>>,vertexy:!fir.box>>}>>>>) map_clauses(exit_release_or_enter_alloc) capture(ByRef) bounds(%3) -> !fir.ref>>,vertexy:!fir.box>>}>>>>> {name = "alloca_dtype%vertexes(2_8)%vertexy"} %5 = fir.load %2 : !fir.ref>>,vertexy:!fir.box>>}>>>>> @@ -272,8 +264,7 @@ func.func @alloca_dtype_map_op_block_add(%arg0 : !fir.ref index %7 = arith.subi %6, %c1_20 : index %8 = fir.coordinate_of %5, %7 : (!fir.box>>,vertexy:!fir.box>>}>>>>, index) -> !fir.ref>>,vertexy:!fir.box>>}>> - %c2_21 = arith.constant 2 : index - %9 = fir.coordinate_of %8, %c2_21 : (!fir.ref>>,vertexy:!fir.box>>}>>, index) -> !fir.ref>>> + %9 = fir.coordinate_of %8, vertexy : (!fir.ref>>,vertexy:!fir.box>>}>>) -> !fir.ref>>> %10 = omp.map.info var_ptr(%9 : !fir.ref>>>, !fir.box>>) map_clauses(tofrom) capture(ByRef) bounds(%1) -> !fir.ref>>> {name = "alloca_dtype%vertexes(2_8)%vertexy"} %11 = omp.map.info var_ptr(%0#1 : !fir.ref>>,vertexy:!fir.box>>}>>>>,array_i:!fir.array<10xi32>}>>, !fir.type<_QFmaptype_nested_derived_type_member_idxTdtype{i:f32,vertexes:!fir.box>>,vertexy:!fir.box>>}>>>>,array_i:!fir.array<10xi32>}>) map_clauses(exit_release_or_enter_alloc) capture(ByRef) members(%4, %10 : [1], [1,2] : !fir.ref>>,vertexy:!fir.box>>}>>>>>, !fir.ref>>>) -> !fir.ref>>,vertexy:!fir.box>>}>>>>,array_i:!fir.array<10xi32>}>> {name = "alloca_dtype", partial_map = true} omp.target map_entries(%11 -> %arg1 : !fir.ref>>,vertexy:!fir.box>>}>>>>,array_i:!fir.array<10xi32>}>>) { @@ -284,13 +275,13 @@ func.func @alloca_dtype_map_op_block_add(%arg0 : !fir.ref>>,vertexy:!fir.box>>}>>>>,array_i:!fir.array<10xi32>}]]>>) { // CHECK: %[[DECLARE:.*]]:2 = hlfir.declare %[[ARG0]] {{.*}} : (!fir.ref>) -> (!fir.ref>, !fir.ref>) -// CHECK: %[[DESC_1:.*]] = fir.coordinate_of %[[DECLARE]]#0, %{{.*}} : (!fir.ref>, index) -> !fir.ref>>,vertexy:!fir.box>>}]]>>>>> +// CHECK: %[[DESC_1:.*]] = fir.coordinate_of %[[DECLARE]]#0, vertexes : (!fir.ref>) -> !fir.ref>>,vertexy:!fir.box>>}]]>>>>> // CHECK: %[[BASE_ADDR_1:.*]] = fir.box_offset %[[DESC_1]] base_addr : (!fir.ref>>>>) -> !fir.llvm_ptr>>> // CHECK: %[[BASE_ADDR_MAP_1:.*]] = omp.map.info var_ptr(%[[DESC_1]] : !fir.ref>>>>, !fir.type<[[REC_TY2]]>) var_ptr_ptr(%[[BASE_ADDR_1]] : !fir.llvm_ptr>>>) map_clauses(exit_release_or_enter_alloc) capture(ByRef) bounds(%{{.*}}) -> !fir.llvm_ptr>>> {{.*}} // CHECK: %[[DESC_MAP_1:.*]] = omp.map.info var_ptr(%[[DESC_1]] : !fir.ref>>>>, !fir.box>>>) map_clauses(to) capture(ByRef) -> !fir.ref>>>> {{.*}} // CHECK: %[[DESC_LD_1:.*]] = fir.load %[[DESC_1]] : !fir.ref>>>> // CHECK: %[[MEMBER_ACCESS_1:.*]] = fir.coordinate_of %[[DESC_LD_1]], %{{.*}} : (!fir.box>>>, index) -> !fir.ref> -// CHECK: %[[DESC_2:.*]] = fir.coordinate_of %[[MEMBER_ACCESS_1]], %{{.*}} : (!fir.ref>, index) -> !fir.ref>>> +// CHECK: %[[DESC_2:.*]] = fir.coordinate_of %[[MEMBER_ACCESS_1]], vertexy : (!fir.ref>) -> !fir.ref>>> // CHECK: %[[BASE_ADDR_2:.*]] = fir.box_offset %[[DESC_2]] base_addr : (!fir.ref>>>) -> !fir.llvm_ptr>> // CHECK: %[[BASE_ADDR_MAP_2:.*]] = omp.map.info var_ptr(%[[DESC_2]] : !fir.ref>>>, i32) var_ptr_ptr(%[[BASE_ADDR_2]] : !fir.llvm_ptr>>) map_clauses(tofrom) capture(ByRef) bounds(%{{.*}}) -> !fir.llvm_ptr>> {{.*}} // CHECK: %[[DESC_MAP_2:.*]] = omp.map.info var_ptr(%[[DESC_2]] : !fir.ref>>>, !fir.box>>) map_clauses(to) capture(ByRef) -> !fir.ref>>> {{.*}}