diff --git a/flang/lib/Lower/OpenACC.cpp b/flang/lib/Lower/OpenACC.cpp --- a/flang/lib/Lower/OpenACC.cpp +++ b/flang/lib/Lower/OpenACC.cpp @@ -15,6 +15,7 @@ #include "flang/Lower/Bridge.h" #include "flang/Lower/FIRBuilder.h" #include "flang/Lower/PFTBuilder.h" +#include "flang/Lower/Support/BoxValue.h" #include "flang/Parser/parse-tree.h" #include "flang/Semantics/tools.h" #include "mlir/Dialect/OpenACC/OpenACC.h" @@ -120,8 +121,8 @@ if (const auto &gangNumValue = std::get>( x.t)) { - gangNum = converter.genExprValue( - *Fortran::semantics::GetExpr(gangNumValue.value())); + gangNum = fir::getBase(converter.genExprValue( + *Fortran::semantics::GetExpr(gangNumValue.value()))); } if (const auto &gangStaticValue = std::get>(x.t)) { @@ -129,8 +130,8 @@ std::get>( gangStaticValue.value().t); if (expr) { - gangStatic = - converter.genExprValue(*Fortran::semantics::GetExpr(*expr)); + gangStatic = fir::getBase( + converter.genExprValue(*Fortran::semantics::GetExpr(*expr))); } else { // * was passed as value and will be represented as a -1 constant // integer. @@ -145,16 +146,16 @@ std::get_if( &clause.u)) { if (workerClause->v) { - workerNum = converter.genExprValue( - *Fortran::semantics::GetExpr(*workerClause->v)); + workerNum = fir::getBase(converter.genExprValue( + *Fortran::semantics::GetExpr(*workerClause->v))); } executionMapping |= mlir::acc::OpenACCExecMapping::WORKER; } else if (const auto *vectorClause = std::get_if( &clause.u)) { if (vectorClause->v) { - vectorLength = converter.genExprValue( - *Fortran::semantics::GetExpr(*vectorClause->v)); + vectorLength = fir::getBase(converter.genExprValue( + *Fortran::semantics::GetExpr(*vectorClause->v))); } executionMapping |= mlir::acc::OpenACCExecMapping::VECTOR; } else if (const auto *tileClause = @@ -165,8 +166,8 @@ std::get>( accTileExpr.t); if (expr) { - tileOperands.push_back( - converter.genExprValue(*Fortran::semantics::GetExpr(*expr))); + tileOperands.push_back(fir::getBase( + converter.genExprValue(*Fortran::semantics::GetExpr(*expr)))); } else { // * was passed as value and will be represented as a -1 constant // integer.