@@ -264,7 +264,7 @@ void Fortran::lower::genSyncTeamStatement(
264264void Fortran::lower::genPauseStatement (
265265 Fortran::lower::AbstractConverter &converter,
266266 const Fortran::parser::PauseStmt &stmt) {
267-
267+
268268 fir::FirOpBuilder &builder = converter.getFirOpBuilder ();
269269 mlir::Location loc = converter.getCurrentLocation ();
270270 Fortran::lower::StatementContext stmtCtx;
@@ -275,38 +275,39 @@ void Fortran::lower::genPauseStatement(
275275
276276 if (stmt.v .has_value ()) {
277277 const auto &code = stmt.v .value ();
278- auto expr = converter.genExprValue (*Fortran::semantics::GetExpr (code), stmtCtx);
278+ auto expr =
279+ converter.genExprValue (*Fortran::semantics::GetExpr (code), stmtCtx);
279280 expr.match (
280281 // Character-valued expression -> call PauseStatementText (CHAR, LEN)
281282 [&](const fir::CharBoxValue &x) {
282- callee = fir::runtime::getRuntimeFunc<mkRTKey (PauseStatementText)>(loc, builder);
283+ callee = fir::runtime::getRuntimeFunc<mkRTKey (PauseStatementText)>(
284+ loc, builder);
283285 calleeType = callee.getFunctionType ();
284286
285287 operands.push_back (
286288 builder.createConvert (loc, calleeType.getInput (0 ), x.getAddr ()));
287289 operands.push_back (
288290 builder.createConvert (loc, calleeType.getInput (1 ), x.getLen ()));
289291 },
290- // Numeric/unboxed value -> call PauseStatement which accepts an integer code .
292+ // Unboxed value -> call PauseStatementInt which accepts an integer.
291293 [&](fir::UnboxedValue x) {
292- callee = fir::runtime::getRuntimeFunc<mkRTKey (PauseStatementInt)>(loc, builder);
293- calleeType = callee. getFunctionType ( );
294- if (calleeType. getNumInputs () >= 1 ) {
295- mlir::Value cast =
296- builder. createConvert (loc, calleeType. getInput ( 0 ), x);
297- operands. push_back (cast );
298- }
294+ callee = fir::runtime::getRuntimeFunc<mkRTKey (PauseStatementInt)>(
295+ loc, builder );
296+ calleeType = callee. getFunctionType ();
297+ assert (calleeType. getNumInputs () >= 1 );
298+ mlir::Value cast =
299+ builder. createConvert (loc, calleeType. getInput ( 0 ), x );
300+ operands. push_back (cast);
299301 },
300302 [&](auto ) {
301303 fir::emitFatalError (loc, " unhandled expression in PAUSE" );
302- // mlir::emitError(loc, "unhandled expression in PAUSE");
303- std::exit (1 );
304304 });
305305 } else {
306- callee = fir::runtime::getRuntimeFunc<mkRTKey (PauseStatement)>(loc, builder);
306+ callee =
307+ fir::runtime::getRuntimeFunc<mkRTKey (PauseStatement)>(loc, builder);
307308 calleeType = callee.getFunctionType ();
308309 }
309-
310+
310311 fir::CallOp::create (builder, loc, callee, operands);
311312
312313 // NOTE: PAUSE does not terminate the current block. The program may resume
0 commit comments