[flang-commits] [flang] [llvm] [flang][OpenMP] Allow INIT clause on DEPOBJ, add depinfo-modifier (PR #173056)
Kareem Ergawy via flang-commits
flang-commits at lists.llvm.org
Tue Dec 23 00:15:32 PST 2025
================
@@ -1536,6 +1536,48 @@ void OmpStructureChecker::Leave(const parser::OmpDeclareVariantDirective &) {
dirContext_.pop_back();
}
+void OmpStructureChecker::CheckInitOnDepobj(
+ const parser::OpenMPDepobjConstruct &depobj,
+ const parser::OmpClause &initClause) {
+ const parser::OmpDirectiveSpecification &dirSpec{depobj.v};
+ const parser::OmpArgumentList &args{dirSpec.Arguments()};
+ const parser::OmpInitClause &init{
+ std::get<parser::OmpClause::Init>(initClause.u).v};
+
+ if (!args.v.empty()) {
+ context_.Say(args.source,
+ "The INIT clause is not allowed when the DEPOBJ directive has an argument"_err_en_US);
+ }
+
+ if (!OmpVerifyModifiers(
+ init, llvm::omp::Clause::OMPC_init, initClause.source, context_)) {
+ return;
+ }
+
+ auto &modifiers{OmpGetModifiers(init)};
+ if (auto *depInfo{
+ OmpGetUniqueModifier<parser::OmpDepinfoModifier>(modifiers)}) {
+ auto depKind{std::get<common::OmpDependenceKind>(depInfo->t)};
+ if (depKind == common::OmpDependenceKind::Depobj) {
+ auto &desc{OmpGetDescriptor<parser::OmpDepinfoModifier>()};
+ context_.Say(OmpGetModifierSource(modifiers, depInfo),
+ "'%s' is not am allowed value of the '%s' modifier"_err_en_US,
----------------
ergawy wrote:
```suggestion
"'%s' is not an allowed value of the '%s' modifier"_err_en_US,
```
https://github.com/llvm/llvm-project/pull/173056
More information about the flang-commits
mailing list