[flang][cuda] Add data attribute to program globals (#92610)
This commit is contained in:
committed by
GitHub
parent
faf39f45e3
commit
702198fc9a
@@ -656,7 +656,10 @@ static void instantiateGlobal(Fortran::lower::AbstractConverter &converter,
|
||||
// Emit only a declaration if the global does not exist.
|
||||
global = declareGlobal(converter, var, globalName, linkage);
|
||||
} else {
|
||||
global = defineGlobal(converter, var, globalName, linkage);
|
||||
cuf::DataAttributeAttr dataAttr =
|
||||
Fortran::lower::translateSymbolCUFDataAttribute(builder.getContext(),
|
||||
sym);
|
||||
global = defineGlobal(converter, var, globalName, linkage, dataAttr);
|
||||
}
|
||||
auto addrOf = builder.create<fir::AddrOfOp>(loc, global.resultType(),
|
||||
global.getSymbol());
|
||||
|
||||
19
flang/test/Lower/CUDA/cuda-program-global.cuf
Normal file
19
flang/test/Lower/CUDA/cuda-program-global.cuf
Normal file
@@ -0,0 +1,19 @@
|
||||
! RUN: bbc -emit-hlfir -fcuda %s -o - | FileCheck %s
|
||||
|
||||
! Test lowering of program local variable that are global
|
||||
|
||||
program test
|
||||
integer, device :: a(10)
|
||||
integer :: b(10)
|
||||
integer :: i
|
||||
print*,i
|
||||
end
|
||||
|
||||
! CHECK-LABEL: func.func @_QQmain()
|
||||
! CHECK: fir.address_of(@_QFEa) : !fir.ref<!fir.array<10xi32>>
|
||||
! CHECK: fir.address_of(@_QFEb) : !fir.ref<!fir.array<10xi32>>
|
||||
! CHECK: %[[ALLOCA:.*]] = fir.alloca i32 {bindc_name = "i", uniq_name = "_QFEi"}
|
||||
! CHECK: hlfir.declare %[[ALLOCA]] {uniq_name = "_QFEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
|
||||
|
||||
! CHECK: fir.global internal @_QFEa {data_attr = #cuf.cuda<device>} : !fir.array<10xi32> {{{$}}
|
||||
! CHECK: fir.global internal @_QFEb : !fir.array<10xi32> {{{$}}
|
||||
Reference in New Issue
Block a user