1010#include " flang/Lower/EnvironmentDefault.h"
1111#include " flang/Optimizer/Builder/BoxValue.h"
1212#include " flang/Optimizer/Builder/FIRBuilder.h"
13+ #include " flang/Optimizer/Builder/Runtime/Coarray.h"
1314#include " flang/Optimizer/Builder/Runtime/EnvironmentDefaults.h"
1415#include " flang/Optimizer/Builder/Runtime/RTBuilder.h"
1516#include " flang/Optimizer/Dialect/FIROps.h"
@@ -23,8 +24,8 @@ using namespace Fortran::runtime;
2324// / Create a `int main(...)` that calls the Fortran entry point
2425void fir::runtime::genMain (
2526 fir::FirOpBuilder &builder, mlir::Location loc,
26- const std::vector<Fortran::lower::EnvironmentDefault> &defs,
27- bool initCuda ) {
27+ const std::vector<Fortran::lower::EnvironmentDefault> &defs, bool initCuda,
28+ bool initCoarrayEnv ) {
2829 auto *context = builder.getContext ();
2930 auto argcTy = builder.getDefaultIntegerType ();
3031 auto ptrTy = mlir::LLVM::LLVMPointerType::get (context);
@@ -69,6 +70,8 @@ void fir::runtime::genMain(
6970 loc, RTNAME_STRING (CUFInit), mlir::FunctionType::get (context, {}, {}));
7071 fir::CallOp::create (builder, loc, initFn);
7172 }
73+ if (initCoarrayEnv)
74+ fir::runtime::genInitCoarray (builder, loc);
7275
7376 fir::CallOp::create (builder, loc, qqMainFn);
7477 fir::CallOp::create (builder, loc, stopFn);
0 commit comments