93 lines · plain
1!RUN: %flang_fc1 -emit-hlfir -fopenmp -fopenmp-version=52 %s -o - | FileCheck %s2!RUN: %flang_fc1 -emit-hlfir -fopenmp -fopenmp-version=52 -fopenmp-is-target-device %s -o - | FileCheck %s3 4module test_05 implicit none6 7!CHECK-DAG: fir.global @_QMtest_0Edata_int {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link), automap = false>} : i328INTEGER :: data_int = 109!$omp declare target link(data_int)10 11!CHECK-DAG: fir.global @_QMtest_0Earray_1d({{.*}}) {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link), automap = false>} : !fir.array<3xi32>12INTEGER :: array_1d(3) = (/1,2,3/)13!$omp declare target link(array_1d)14 15!CHECK-DAG: fir.global @_QMtest_0Earray_2d({{.*}}) {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link), automap = false>} : !fir.array<2x2xi32>16INTEGER :: array_2d(2,2) = reshape((/1,2,3,4/), (/2,2/))17!$omp declare target link(array_2d)18 19!CHECK-DAG: fir.global @_QMtest_0Ept1 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link), automap = false>} : !fir.box<!fir.ptr<i32>>20INTEGER, POINTER :: pt121!$omp declare target link(pt1)22 23!CHECK-DAG: fir.global @_QMtest_0Ept2_tar {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link), automap = false>} target : i3224INTEGER, TARGET :: pt2_tar = 525!$omp declare target link(pt2_tar)26 27!CHECK-DAG: fir.global @_QMtest_0Ept2 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link), automap = false>} : !fir.box<!fir.ptr<i32>>28INTEGER, POINTER :: pt2 => pt2_tar29!$omp declare target link(pt2)30 31!CHECK-DAG: fir.global @_QMtest_0Edata_int_to {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to), automap = false>} : i3232INTEGER :: data_int_to = 533!$omp declare target to(data_int_to)34 35!CHECK-DAG: fir.global @_QMtest_0Edata_int_enter {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (enter), automap = false>} : i3236INTEGER :: data_int_enter = 537!$omp declare target enter(data_int_enter)38 39!CHECK-DAG: fir.global @_QMtest_0Edata_int_clauseless {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to), automap = false>} : i3240INTEGER :: data_int_clauseless = 141!$omp declare target(data_int_clauseless)42 43!CHECK-DAG: fir.global @_QMtest_0Edata_extended_to_1 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to), automap = false>} : f3244!CHECK-DAG: fir.global @_QMtest_0Edata_extended_to_2 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to), automap = false>} : f3245REAL :: data_extended_to_1 = 246REAL :: data_extended_to_2 = 347!$omp declare target to(data_extended_to_1, data_extended_to_2)48 49!CHECK-DAG: fir.global @_QMtest_0Edata_extended_enter_1 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (enter), automap = false>} : f3250!CHECK-DAG: fir.global @_QMtest_0Edata_extended_enter_2 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (enter), automap = false>} : f3251REAL :: data_extended_enter_1 = 252REAL :: data_extended_enter_2 = 353!$omp declare target enter(data_extended_enter_1, data_extended_enter_2)54 55!CHECK-DAG: fir.global @_QMtest_0Edata_extended_link_1 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link), automap = false>} : f3256!CHECK-DAG: fir.global @_QMtest_0Edata_extended_link_2 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link), automap = false>} : f3257REAL :: data_extended_link_1 = 258REAL :: data_extended_link_2 = 359!$omp declare target link(data_extended_link_1, data_extended_link_2)60 61!CHECK-DAG: fir.global @_QMtest_0Eautomap_data {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (enter), automap = true>} target : !fir.box<!fir.heap<i32>>62INTEGER, ALLOCATABLE, TARGET :: automap_data63!$omp declare target enter(automap : automap_data)64 65contains66end module test_067 68PROGRAM commons69 !CHECK-DAG: fir.global @numbers_ {alignment = 4 : i64, omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to), automap = false>} : tuple<f32, f32> {70 REAL :: one = 171 REAL :: two = 272 COMMON /numbers/ one, two73 !$omp declare target(/numbers/)74 75 !CHECK-DAG: fir.global @numbers_link_ {alignment = 4 : i64, omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link), automap = false>} : tuple<f32, f32> {76 REAL :: one_link = 177 REAL :: two_link = 278 COMMON /numbers_link/ one_link, two_link79 !$omp declare target link(/numbers_link/)80 81 !CHECK-DAG: fir.global @numbers_to_ {alignment = 4 : i64, omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to), automap = false>} : tuple<f32, f32> {82 REAL :: one_to = 183 REAL :: two_to = 284 COMMON /numbers_to/ one_to, two_to85 !$omp declare target to(/numbers_to/)86 87 !CHECK-DAG: fir.global @numbers_enter_ {alignment = 4 : i64, omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (enter), automap = false>} : tuple<f32, f32> {88 REAL :: one_enter = 189 REAL :: two_enter = 290 COMMON /numbers_enter/ one_enter, two_enter91 !$omp declare target enter(/numbers_enter/)92END93