blob: 5038f718517ac42162e4bef040d790f674950998 [file] [log] [blame] [edit]
! RUN: bbc -fopenacc -emit-hlfir %s -o - | FileCheck %s
! Verify that a COMMON block declared with OpenACC declare inside a function
! is lowered as a global declare (acc.global_ctor/dtor) rather than a
! structured declare.
program p
implicit none
real :: pi
integer :: i
common /COM/ pi
!$acc declare copyin(/COM/)
data pi/0.0/
! CHECK-DAG: acc.global_ctor @{{.*}}_acc_ctor {
! CHECK-DAG: %[[ADDR0:.*]] = fir.address_of(@{{.*}}) {acc.declare = #acc.declare<dataClause = acc_copyin>} : {{.*}}
! CHECK-DAG: acc.declare_enter dataOperands(%{{.*}} : {{.*}})
! CHECK-DAG: acc.terminator
! CHECK-DAG: }
! CHECK-DAG: acc.global_dtor @{{.*}}_acc_dtor {
! CHECK-DAG: %[[ADDR1:.*]] = fir.address_of(@{{.*}}) {acc.declare = #acc.declare<dataClause = acc_copyin>} : !fir.ref<tuple<f32>>
! CHECK-DAG: %[[GDP:.*]] = acc.getdeviceptr varPtr(%[[ADDR1]] : !fir.ref<tuple<f32>>) -> !fir.ref<tuple<f32>> {dataClause = #acc<data_clause acc_copyin>, {{.*}}}
! CHECK-DAG: acc.declare_exit dataOperands(%[[GDP]] : !fir.ref<tuple<f32>>)
! CHECK-DAG: acc.delete accPtr(%[[GDP]] : !fir.ref<tuple<f32>>) {dataClause = #acc<data_clause acc_copyin>{{.*}}}
! CHECK-DAG: acc.terminator
! CHECK-DAG: }
contains
subroutine s()
implicit none
real :: pi
common /COM/ pi
!$acc declare copyin(/COM/)
end subroutine s
end program p