[flang-commits] [flang] [llvm] [flang][OpenMP] Apply modifier representation to semantic checks (PR #116658)
Kiran Chandramohan via flang-commits
flang-commits at lists.llvm.org
Thu Nov 21 10:56:18 PST 2024
================
@@ -2850,20 +2853,27 @@ void OmpStructureChecker::Enter(const parser::OmpClause::Destroy &x) {
void OmpStructureChecker::Enter(const parser::OmpClause::Reduction &x) {
CheckAllowedClause(llvm::omp::Clause::OMPC_reduction);
- if (CheckReductionOperators(x)) {
- CheckReductionTypeList(x);
- }
- if (const auto &maybeModifier{
- std::get<std::optional<ReductionModifier>>(x.v.t)}) {
- const ReductionModifier modifier{*maybeModifier};
- CheckReductionModifier(modifier);
+ if (OmpVerifyModifiers(x.v, GetContext().clauseSource, context_)) {
+ if (CheckReductionOperators(x)) {
+ CheckReductionTypeList(x);
+ }
+ auto &modifiers{OmpGetModifiers(x.v)};
+ using ReductionModifier = parser::OmpReductionModifier;
+ if (auto *maybeModifier{
+ OmpGetUniqueModifier<ReductionModifier>(modifiers)}) {
+ CheckReductionModifier(*maybeModifier);
+ }
}
}
bool OmpStructureChecker::CheckReductionOperators(
const parser::OmpClause::Reduction &x) {
-
- const auto &definedOp{std::get<parser::OmpReductionIdentifier>(x.v.t)};
+ auto &modifiers{OmpGetModifiers(x.v)};
+ const auto *definedOp{
+ OmpGetUniqueModifier<parser::OmpReductionIdentifier>(modifiers)};
+ if (!definedOp) {
+ return false;
+ }
----------------
kiranchandramohan wrote:
Nit: Generally frontend code is nested. Below also.
https://github.com/llvm/llvm-project/pull/116658
More information about the flang-commits
mailing list