llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Krzysztof Parzyszek (kparzysz) <details> <summary>Changes</summary> This removes mentions of specific combined directives. Also, add a quote from the OpenMP spec to explain the code dealing with the `bind` clause. --- Full diff: https://github.com/llvm/llvm-project/pull/97446.diff 1 Files Affected: - (modified) clang/lib/Sema/SemaOpenMP.cpp (+8-4) ``````````diff diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index 86666f064f35d..ca7e8acd1c15a 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -6270,16 +6270,20 @@ bool SemaOpenMP::mapLoopConstruct( if (BindKind == OMPC_BIND_unknown) { // Setting the enclosing teams or parallel construct for the loop // directive without bind clause. + // [5.0:129:25-28] If the bind clause is not present on the construct and + // the loop construct is closely nested inside a teams or parallel + // construct, the binding region is the corresponding teams or parallel + // region. If none of those conditions hold, the binding region is not + // defined. BindKind = OMPC_BIND_thread; // Default bind(thread) if binding is unknown + auto ParentLeafs = getLeafConstructsOrSelf(ParentDirective); if (ParentDirective == OMPD_unknown) { Diag(DSAStack->getDefaultDSALocation(), diag::err_omp_bind_required_on_loop); - } else if (ParentDirective == OMPD_parallel || - ParentDirective == OMPD_target_parallel) { + } else if (ParentLeafs.back() == OMPD_parallel) { BindKind = OMPC_BIND_parallel; - } else if (ParentDirective == OMPD_teams || - ParentDirective == OMPD_target_teams) { + } else if (ParentLeafs.back() == OMPD_teams) { BindKind = OMPC_BIND_teams; } } else { `````````` </details> https://github.com/llvm/llvm-project/pull/97446 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits