Skip to content

Commit 9fdf2c7

Browse files
authored
[flang][cuda] Call runtime initialize for derived type with device components (#157914)
1 parent ccc3403 commit 9fdf2c7

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

flang/lib/Lower/ConvertVariable.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -842,7 +842,8 @@ void Fortran::lower::defaultInitializeAtRuntime(
842842
Fortran::semantics::DeclTypeSpec::Category::TypeDerived &&
843843
!mlir::isa<fir::SequenceType>(symTy) &&
844844
!sym.test(Fortran::semantics::Symbol::Flag::OmpPrivate) &&
845-
!sym.test(Fortran::semantics::Symbol::Flag::OmpFirstPrivate)) {
845+
!sym.test(Fortran::semantics::Symbol::Flag::OmpFirstPrivate) &&
846+
!Fortran::semantics::HasCUDAComponent(sym)) {
846847
std::string globalName = fir::NameUniquer::doGenerated(
847848
(converter.mangleName(*declTy->AsDerived()) + fir::kNameSeparator +
848849
fir::kDerivedTypeInitSuffix)

flang/test/Lower/CUDA/cuda-allocatable-device.cuf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,11 @@ end module
1212
! CHECK-LABEL: fir.global linkonce_odr @_QMmE.c.device_array
1313
! CHECK: fir.insert_value %{{.*}}, %c6{{.*}}, ["genre"
1414
! CHECK: fir.insert_value %{{.*}}, %c5{{.*}}, ["genre"
15+
16+
program main
17+
use m
18+
type(device_array) :: local
19+
end
20+
21+
! CHECK-LABEL: func.func @_QQmain()
22+
! CHECK: fir.call @_FortranAInitialize

0 commit comments

Comments
 (0)