41 lines · plain
1! RUN: bbc -fopenacc -emit-hlfir %s -o - | FileCheck %s2 3! Verify that a COMMON block declared with OpenACC declare inside a function4! is lowered as a global declare (acc.global_ctor/dtor) rather than a5! structured declare.6 7program p8 implicit none9 real :: pi10 integer :: i11 common /COM/ pi12!$acc declare copyin(/COM/)13 data pi/0.0/14 15! CHECK-DAG: acc.global_ctor @{{.*}}_acc_ctor {16! CHECK-DAG: %[[ADDR0:.*]] = fir.address_of(@{{.*}}) {acc.declare = #acc.declare<dataClause = acc_copyin>} : {{.*}}17! CHECK-DAG: acc.declare_enter dataOperands(%{{.*}} : {{.*}})18! CHECK-DAG: acc.terminator19! CHECK-DAG: }20 21! CHECK-DAG: acc.global_dtor @{{.*}}_acc_dtor {22! CHECK-DAG: %[[ADDR1:.*]] = fir.address_of(@{{.*}}) {acc.declare = #acc.declare<dataClause = acc_copyin>} : !fir.ref<tuple<f32>>23! CHECK-DAG: %[[GDP:.*]] = acc.getdeviceptr varPtr(%[[ADDR1]] : !fir.ref<tuple<f32>>) -> !fir.ref<tuple<f32>> {dataClause = #acc<data_clause acc_copyin>, {{.*}}}24! CHECK-DAG: acc.declare_exit dataOperands(%[[GDP]] : !fir.ref<tuple<f32>>)25! CHECK-DAG: acc.delete accPtr(%[[GDP]] : !fir.ref<tuple<f32>>) {dataClause = #acc<data_clause acc_copyin>{{.*}}}26! CHECK-DAG: acc.terminator27! CHECK-DAG: }28 29contains30 31 subroutine s()32 implicit none33 real :: pi34 common /COM/ pi35!$acc declare copyin(/COM/)36 end subroutine s37 38end program p39 40 41