|
| 1 | +! RUN: %flang_fc1 -emit-fir -fopenmp %s -o - | FileCheck %s |
| 2 | +! RUN: bbc -fopenmp -emit-fir %s -o - | FileCheck %s |
| 3 | + |
| 4 | +! CHECK: %[[V0:[0-9]+]] = fir.alloca !fir.type<_QFfooTt0{a0:i32,a1:i32}> {bindc_name = "a", uniq_name = "_QFfooEa"} |
| 5 | +! CHECK: %[[V1:[0-9]+]] = fir.declare %[[V0]] {uniq_name = "_QFfooEa"} : (!fir.ref<!fir.type<_QFfooTt0{a0:i32,a1:i32}>>) -> !fir.ref<!fir.type<_QFfooTt0{a0:i32,a1:i32}>> |
| 6 | +! CHECK: %[[V2:[0-9]+]] = fir.field_index a1, !fir.type<_QFfooTt0{a0:i32,a1:i32}> |
| 7 | +! CHECK: %[[V3:[0-9]+]] = fir.coordinate_of %[[V1]], %[[V2]] : (!fir.ref<!fir.type<_QFfooTt0{a0:i32,a1:i32}>>, !fir.field) -> !fir.ref<i32> |
| 8 | +! CHECK: %[[V4:[0-9]+]] = omp.map_info var_ptr(%[[V3]] : !fir.ref<i32>, i32) map_clauses(tofrom) capture(ByRef) -> !fir.ref<i32> {name = "a%a1"} |
| 9 | +! CHECK: %[[V5:[0-9]+]] = omp.map_info var_ptr(%[[V1]] : !fir.ref<!fir.type<_QFfooTt0{a0:i32,a1:i32}>>, !fir.type<_QFfooTt0{a0:i32,a1:i32}>) map_clauses(implicit, tofrom) capture(ByRef) -> !fir.ref<!fir.type<_QFfooTt0{a0:i32,a1:i32}>> {name = "a"} |
| 10 | +! CHECK: omp.target map_entries(%[[V4]] -> %arg0, %[[V5]] -> %arg1 : !fir.ref<i32>, !fir.ref<!fir.type<_QFfooTt0{a0:i32,a1:i32}>>) { |
| 11 | +! CHECK: ^bb0(%arg0: !fir.ref<i32>, %arg1: !fir.ref<!fir.type<_QFfooTt0{a0:i32,a1:i32}>>): |
| 12 | +! CHECK: %c0_i32 = arith.constant 0 : i32 |
| 13 | +! CHECK: %[[V6:[0-9]+]] = fir.declare %arg1 {uniq_name = "_QFfooEa"} : (!fir.ref<!fir.type<_QFfooTt0{a0:i32,a1:i32}>>) -> !fir.ref<!fir.type<_QFfooTt0{a0:i32,a1:i32}>> |
| 14 | +! CHECK: %[[V7:[0-9]+]] = fir.field_index a1, !fir.type<_QFfooTt0{a0:i32,a1:i32}> |
| 15 | +! CHECK: %[[V8:[0-9]+]] = fir.coordinate_of %[[V6]], %[[V7]] : (!fir.ref<!fir.type<_QFfooTt0{a0:i32,a1:i32}>>, !fir.field) -> !fir.ref<i32> |
| 16 | +! CHECK: fir.store %c0_i32 to %[[V8]] : !fir.ref<i32> |
| 17 | +! CHECK: omp.terminator |
| 18 | +! CHECK: } |
| 19 | + |
| 20 | +subroutine foo() |
| 21 | + implicit none |
| 22 | + |
| 23 | + type t0 |
| 24 | + integer :: a0, a1 |
| 25 | + end type |
| 26 | + |
| 27 | + type(t0) :: a |
| 28 | + |
| 29 | + !$omp target map(a%a1) |
| 30 | + a%a1 = 0 |
| 31 | + !$omp end target |
| 32 | +end |
| 33 | + |
0 commit comments