@@ -72,7 +72,8 @@ static mlir::Value genScalarValue(Fortran::lower::AbstractConverter &converter,
72
72
}
73
73
74
74
// / Does this variable have a default initialization?
75
- static bool hasDefaultInitialization (const Fortran::semantics::Symbol &sym) {
75
+ bool Fortran::lower::hasDefaultInitialization (
76
+ const Fortran::semantics::Symbol &sym) {
76
77
if (sym.has <Fortran::semantics::ObjectEntityDetails>() && sym.size ())
77
78
if (!Fortran::semantics::IsAllocatableOrPointer (sym))
78
79
if (const Fortran::semantics::DeclTypeSpec *declTypeSpec = sym.GetType ())
@@ -353,7 +354,7 @@ static mlir::Value genComponentDefaultInit(
353
354
// global constructor since this has no runtime cost.
354
355
componentValue = fir::factory::createUnallocatedBox (
355
356
builder, loc, componentTy, std::nullopt);
356
- } else if (hasDefaultInitialization (component)) {
357
+ } else if (Fortran::lower:: hasDefaultInitialization (component)) {
357
358
// Component type has default initialization.
358
359
componentValue = genDefaultInitializerValue (converter, loc, component,
359
360
componentTy, stmtCtx);
@@ -556,7 +557,7 @@ static fir::GlobalOp defineGlobal(Fortran::lower::AbstractConverter &converter,
556
557
builder.createConvert (loc, symTy, fir::getBase (initVal));
557
558
builder.create <fir::HasValueOp>(loc, castTo);
558
559
});
559
- } else if (hasDefaultInitialization (sym)) {
560
+ } else if (Fortran::lower:: hasDefaultInitialization (sym)) {
560
561
Fortran::lower::createGlobalInitialization (
561
562
builder, global, [&](fir::FirOpBuilder &builder) {
562
563
Fortran::lower::StatementContext stmtCtx (
@@ -752,17 +753,15 @@ mustBeDefaultInitializedAtRuntime(const Fortran::lower::pft::Variable &var) {
752
753
return true ;
753
754
// Local variables (including function results), and intent(out) dummies must
754
755
// be default initialized at runtime if their type has default initialization.
755
- return hasDefaultInitialization (sym);
756
+ return Fortran::lower:: hasDefaultInitialization (sym);
756
757
}
757
758
758
759
// / Call default initialization runtime routine to initialize \p var.
759
- static void
760
- defaultInitializeAtRuntime (Fortran::lower::AbstractConverter &converter,
761
- const Fortran::lower::pft::Variable &var,
762
- Fortran::lower::SymMap &symMap) {
760
+ void Fortran::lower::defaultInitializeAtRuntime (
761
+ Fortran::lower::AbstractConverter &converter,
762
+ const Fortran::semantics::Symbol &sym, Fortran::lower::SymMap &symMap) {
763
763
fir::FirOpBuilder &builder = converter.getFirOpBuilder ();
764
764
mlir::Location loc = converter.getCurrentLocation ();
765
- const Fortran::semantics::Symbol &sym = var.getSymbol ();
766
765
fir::ExtendedValue exv = converter.getSymbolExtendedValue (sym, &symMap);
767
766
if (Fortran::semantics::IsOptional (sym)) {
768
767
// 15.5.2.12 point 3, absent optional dummies are not initialized.
@@ -927,7 +926,8 @@ static void instantiateLocal(Fortran::lower::AbstractConverter &converter,
927
926
if (needDummyIntentoutFinalization (var))
928
927
finalizeAtRuntime (converter, var, symMap);
929
928
if (mustBeDefaultInitializedAtRuntime (var))
930
- defaultInitializeAtRuntime (converter, var, symMap);
929
+ Fortran::lower::defaultInitializeAtRuntime (converter, var.getSymbol (),
930
+ symMap);
931
931
if (Fortran::semantics::NeedCUDAAlloc (var.getSymbol ())) {
932
932
auto *builder = &converter.getFirOpBuilder ();
933
933
mlir::Location loc = converter.getCurrentLocation ();
@@ -1168,7 +1168,8 @@ static void instantiateAlias(Fortran::lower::AbstractConverter &converter,
1168
1168
// do not try optimizing this to single default initializations of
1169
1169
// the equivalenced storages. Keep lowering simple.
1170
1170
if (mustBeDefaultInitializedAtRuntime (var))
1171
- defaultInitializeAtRuntime (converter, var, symMap);
1171
+ Fortran::lower::defaultInitializeAtRuntime (converter, var.getSymbol (),
1172
+ symMap);
1172
1173
}
1173
1174
1174
1175
// ===--------------------------------------------------------------===//
0 commit comments