[flang-commits] [flang] [flang][OpenMP] Use 'linear-step' instead of 'step-simple-modifier' i… (PR #214041)
Sairudra More via flang-commits
flang-commits at lists.llvm.org
Tue Aug 4 12:51:51 PDT 2026
================
@@ -1109,10 +1111,27 @@ TYPE_PARSER(sourced(construct<OmpInReductionClause::Modifier>(
TYPE_PARSER(sourced(construct<OmpLastprivateClause::Modifier>(
Parser<OmpLastprivateModifier>{})))
-TYPE_PARSER(sourced(
- construct<OmpLinearClause::Modifier>(Parser<OmpLinearModifier>{}) ||
- construct<OmpLinearClause::Modifier>(Parser<OmpStepComplexModifier>{}) ||
- construct<OmpLinearClause::Modifier>(Parser<OmpStepSimpleModifier>{})))
+struct OmpLinearClauseModifierParser {
+ using resultType = OmpLinearClause::Modifier;
+
+ std::optional<resultType> Parse(ParseState &state) const {
+ unsigned version{state.userState()->langOptions().OpenMPVersion};
+ if (version < 52) {
+ auto parser{sourced( //
+ construct<resultType>(Parser<OmpLinearModifier>{}) ||
+ construct<resultType>(Parser<OmpLinearStep>{}))};
----------------
Saieiei wrote:
Could we still parse `OmpStepComplexModifier` here so `linear(x: step(3))` with OpenMP <5.2 retains the helpful “try -fopenmp-version=52” diagnostic? Otherwise it appears to parse `step(3)` as an expression and later reports a misleading type error.
https://github.com/llvm/llvm-project/pull/214041
More information about the flang-commits
mailing list