2020#include " flang/Parser/parse-tree.h"
2121#include " flang/Semantics/expression.h"
2222
23- // / Initializes values for STAT and ERRMSG
24- static std::pair<mlir::Value, mlir::Value> getStatAndErrmsg (
25- Fortran::lower::AbstractConverter &converter, mlir::Location loc,
26- const std::list<Fortran::parser::StatOrErrmsg> &statOrErrList) {
27- Fortran::lower::StatementContext stmtCtx;
28-
29- mlir::Value errMsgExpr, statExpr;
30- for (const Fortran::parser::StatOrErrmsg &statOrErr : statOrErrList) {
31- std::visit (Fortran::common::visitors{
32- [&](const Fortran::parser::StatVariable &statVar) {
33- statExpr = fir::getBase (converter.genExprAddr (
34- loc, Fortran::semantics::GetExpr (statVar), stmtCtx));
35- },
36- [&](const Fortran::parser::MsgVariable &errMsgVar) {
37- const Fortran::semantics::SomeExpr *expr =
38- Fortran::semantics::GetExpr (errMsgVar);
39- errMsgExpr = fir::getBase (
40- converter.genExprBox (loc, *expr, stmtCtx));
41- }},
42- statOrErr.u );
43- }
44-
45- return {statExpr, errMsgExpr};
46- }
47-
4823// ===----------------------------------------------------------------------===//
4924// Synchronization statements
5025// ===----------------------------------------------------------------------===//
@@ -57,7 +32,7 @@ void Fortran::lower::genSyncAllStatement(
5732
5833 // Handle STAT and ERRMSG values
5934 const std::list<Fortran::parser::StatOrErrmsg> &statOrErrList = stmt.v ;
60- auto [statAddr, errMsgAddr] = getStatAndErrmsg ( converter, loc, statOrErrList);
35+ auto [statAddr, errMsgAddr] = converter. genStatAndErrmsg ( loc, statOrErrList);
6136
6237 fir::FirOpBuilder &builder = converter.getFirOpBuilder ();
6338 mif::SyncAllOp::create (builder, loc, statAddr, errMsgAddr);
@@ -73,7 +48,7 @@ void Fortran::lower::genSyncImagesStatement(
7348 // Handle STAT and ERRMSG values
7449 const std::list<Fortran::parser::StatOrErrmsg> &statOrErrList =
7550 std::get<std::list<Fortran::parser::StatOrErrmsg>>(stmt.t );
76- auto [statAddr, errMsgAddr] = getStatAndErrmsg ( converter, loc, statOrErrList);
51+ auto [statAddr, errMsgAddr] = converter. genStatAndErrmsg ( loc, statOrErrList);
7752
7853 // SYNC_IMAGES(*) is passed as count == -1 while SYNC IMAGES([]) has count
7954 // == 0. Note further that SYNC IMAGES(*) is not semantically equivalent to
@@ -105,7 +80,7 @@ void Fortran::lower::genSyncMemoryStatement(
10580
10681 // Handle STAT and ERRMSG values
10782 const std::list<Fortran::parser::StatOrErrmsg> &statOrErrList = stmt.v ;
108- auto [statAddr, errMsgAddr] = getStatAndErrmsg ( converter, loc, statOrErrList);
83+ auto [statAddr, errMsgAddr] = converter. genStatAndErrmsg ( loc, statOrErrList);
10984
11085 fir::FirOpBuilder &builder = converter.getFirOpBuilder ();
11186 mif::SyncMemoryOp::create (builder, loc, statAddr, errMsgAddr);
@@ -128,7 +103,7 @@ void Fortran::lower::genSyncTeamStatement(
128103 // Handle STAT and ERRMSG values
129104 const std::list<Fortran::parser::StatOrErrmsg> &statOrErrList =
130105 std::get<std::list<Fortran::parser::StatOrErrmsg>>(stmt.t );
131- auto [statAddr, errMsgAddr] = getStatAndErrmsg ( converter, loc, statOrErrList);
106+ auto [statAddr, errMsgAddr] = converter. genStatAndErrmsg ( loc, statOrErrList);
132107
133108 fir::FirOpBuilder &builder = converter.getFirOpBuilder ();
134109 mif::SyncTeamOp::create (builder, loc, team, statAddr, errMsgAddr);
0 commit comments