[flang] [llvm] [flang][OpenMP] Parsing support for iterator modifiers in FROM and TO (PR #114593)
Krzysztof Parzyszek via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 4 06:41:28 PST 2024
================
@@ -1647,24 +1700,29 @@ void OmpStructureChecker::CheckOrderedDependClause(
}
void OmpStructureChecker::CheckTargetUpdate() {
- const parser::OmpClause *toClause = FindClause(llvm::omp::Clause::OMPC_to);
- const parser::OmpClause *fromClause =
- FindClause(llvm::omp::Clause::OMPC_from);
- if (!toClause && !fromClause) {
+ const parser::OmpClause *toWrapper{FindClause(llvm::omp::Clause::OMPC_to)};
+ const parser::OmpClause *fromWrapper{
+ FindClause(llvm::omp::Clause::OMPC_from)};
+ if (!toWrapper && !fromWrapper) {
context_.Say(GetContext().directiveSource,
- "At least one motion-clause (TO/FROM) must be specified on TARGET UPDATE construct."_err_en_US);
+ "At least one motion-clause (TO/FROM) must be specified on "
+ "TARGET UPDATE construct."_err_en_US);
}
- if (toClause && fromClause) {
+ if (toWrapper && fromWrapper) {
SymbolSourceMap toSymbols, fromSymbols;
+ auto &fromClause{std::get<parser::OmpClause::From>(fromWrapper->u).v};
+ auto &toClause{std::get<parser::OmpClause::To>(toWrapper->u).v};
GetSymbolsInObjectList(
- std::get<parser::OmpClause::To>(toClause->u).v, toSymbols);
+ std::get<parser::OmpObjectList>(fromClause.t), fromSymbols);
GetSymbolsInObjectList(
- std::get<parser::OmpClause::From>(fromClause->u).v, fromSymbols);
+ std::get<parser::OmpObjectList>(toClause.t), toSymbols);
+
for (auto &[symbol, source] : toSymbols) {
- auto fromSymbol = fromSymbols.find(symbol);
+ auto fromSymbol{fromSymbols.find(symbol)};
if (fromSymbol != fromSymbols.end()) {
context_.Say(source,
- "A list item ('%s') can only appear in a TO or FROM clause, but not in both."_err_en_US,
+ "A list item ('%s') can only appear in a TO or FROM clause, "
+ "but not in both."_err_en_US,
----------------
kparzysz wrote:
Undone.
https://github.com/llvm/llvm-project/pull/114593
More information about the llvm-commits
mailing list