@@ -702,29 +702,6 @@ static void instantiateGlobal(Fortran::lower::AbstractConverter &converter,
702
702
mapSymbolAttributes (converter, var, symMap, stmtCtx, cast);
703
703
}
704
704
705
- bool needCUDAAlloc (const Fortran::semantics::Symbol &sym) {
706
- if (Fortran::semantics::IsDummy (sym))
707
- return false ;
708
- if (const auto *details{
709
- sym.GetUltimate ()
710
- .detailsIf <Fortran::semantics::ObjectEntityDetails>()}) {
711
- if (details->cudaDataAttr () &&
712
- (*details->cudaDataAttr () == Fortran::common::CUDADataAttr::Device ||
713
- *details->cudaDataAttr () == Fortran::common::CUDADataAttr::Managed ||
714
- *details->cudaDataAttr () == Fortran::common::CUDADataAttr::Unified ||
715
- *details->cudaDataAttr () == Fortran::common::CUDADataAttr::Shared ||
716
- *details->cudaDataAttr () == Fortran::common::CUDADataAttr::Pinned))
717
- return true ;
718
- const Fortran::semantics::DeclTypeSpec *type{details->type ()};
719
- const Fortran::semantics::DerivedTypeSpec *derived{type ? type->AsDerived ()
720
- : nullptr };
721
- if (derived)
722
- if (FindCUDADeviceAllocatableUltimateComponent (*derived))
723
- return true ;
724
- }
725
- return false ;
726
- }
727
-
728
705
// ===----------------------------------------------------------------===//
729
706
// Local variables instantiation (not for alias)
730
707
// ===----------------------------------------------------------------===//
@@ -755,7 +732,7 @@ static mlir::Value createNewLocal(Fortran::lower::AbstractConverter &converter,
755
732
if (ultimateSymbol.test (Fortran::semantics::Symbol::Flag::CrayPointee))
756
733
return builder.create <fir::ZeroOp>(loc, fir::ReferenceType::get (ty));
757
734
758
- if (needCUDAAlloc (ultimateSymbol)) {
735
+ if (Fortran::semantics::NeedCUDAAlloc (ultimateSymbol)) {
759
736
cuf::DataAttributeAttr dataAttr =
760
737
Fortran::lower::translateSymbolCUFDataAttribute (builder.getContext (),
761
738
ultimateSymbol);
@@ -1110,7 +1087,7 @@ static void instantiateLocal(Fortran::lower::AbstractConverter &converter,
1110
1087
Fortran::lower::defaultInitializeAtRuntime (converter, var.getSymbol (),
1111
1088
symMap);
1112
1089
auto *builder = &converter.getFirOpBuilder ();
1113
- if (needCUDAAlloc (var.getSymbol ()) &&
1090
+ if (Fortran::semantics::NeedCUDAAlloc (var.getSymbol ()) &&
1114
1091
!cuf::isCUDADeviceContext (builder->getRegion ())) {
1115
1092
cuf::DataAttributeAttr dataAttr =
1116
1093
Fortran::lower::translateSymbolCUFDataAttribute (builder->getContext (),
0 commit comments