[all-commits] [llvm/llvm-project] 89f930: [clang][OpenMP] Fix/enforce order-concurrent-nesta...

Ernesto Su via All-commits all-commits at lists.llvm.org
Fri Apr 18 10:58:11 PDT 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 89f930a7de5df59c5a4c2bbfce9b67404b33dc63
      https://github.com/llvm/llvm-project/commit/89f930a7de5df59c5a4c2bbfce9b67404b33dc63
  Author: Ernesto Su <ernesto.su at intel.com>
  Date:   2025-04-18 (Fri, 18 Apr 2025)

  Changed paths:
    M clang/include/clang/Basic/OpenMPKinds.h
    M clang/lib/Basic/OpenMPKinds.cpp
    M clang/lib/Sema/SemaOpenMP.cpp
    M clang/test/OpenMP/for_order_messages.cpp

  Log Message:
  -----------
  [clang][OpenMP] Fix/enforce order-concurrent-nestable rules (#135463)

OpenMP has restrictions on directives allowed to be strictly nested
inside a
construct with the order(concurrent) clause specified.
 - OpenMP 5.0, 5.1, and 5.2 allows: 'loop', 'parallel', 'simd', and
     combined directives starting with 'parallel'.
 - OpenMP 6.0 allows: the above directives plus 'atomic' and
     all loop-transformation directives.

Furthermore, a region that corresponds to a construct with
order(concurrent)
specified may not contain calls to the OpenMP runtime API.

This PR fixes the following issues in the current implementation:

With -fopenmp-version=50: none of the nesting restrictions above were
enforced
 With -fopenmp-version=60:
1. Clang did not reject OpenMP runtime APIs encountered in the region.
2. Clang erroneously rejected combined directives starting with
parallel.

---------

Co-authored-by: Zahira Ammarguellat <zahira.ammarguellat at intel.com>



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list