@@ -702,29 +702,6 @@ static void instantiateGlobal(Fortran::lower::AbstractConverter &converter,
702702 mapSymbolAttributes (converter, var, symMap, stmtCtx, cast);
703703}
704704
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-
728705// ===----------------------------------------------------------------===//
729706// Local variables instantiation (not for alias)
730707// ===----------------------------------------------------------------===//
@@ -755,7 +732,7 @@ static mlir::Value createNewLocal(Fortran::lower::AbstractConverter &converter,
755732 if (ultimateSymbol.test (Fortran::semantics::Symbol::Flag::CrayPointee))
756733 return builder.create <fir::ZeroOp>(loc, fir::ReferenceType::get (ty));
757734
758- if (needCUDAAlloc (ultimateSymbol)) {
735+ if (Fortran::semantics::NeedCUDAAlloc (ultimateSymbol)) {
759736 cuf::DataAttributeAttr dataAttr =
760737 Fortran::lower::translateSymbolCUFDataAttribute (builder.getContext (),
761738 ultimateSymbol);
@@ -1110,7 +1087,7 @@ static void instantiateLocal(Fortran::lower::AbstractConverter &converter,
11101087 Fortran::lower::defaultInitializeAtRuntime (converter, var.getSymbol (),
11111088 symMap);
11121089 auto *builder = &converter.getFirOpBuilder ();
1113- if (needCUDAAlloc (var.getSymbol ()) &&
1090+ if (Fortran::semantics::NeedCUDAAlloc (var.getSymbol ()) &&
11141091 !cuf::isCUDADeviceContext (builder->getRegion ())) {
11151092 cuf::DataAttributeAttr dataAttr =
11161093 Fortran::lower::translateSymbolCUFDataAttribute (builder->getContext (),
0 commit comments