https://github.com/nicebert created 
https://github.com/llvm/llvm-project/pull/205775

Enable -fopenmp-assume-teams-oversubscription and
-fopenmp-assume-threads-oversubscription by default under
-fopenmp-target-fast. Adds driver test coverage for both.

Split out of #205325 as a standalone change.

>From 2800c1d986a4fc13a890a1954e13d3e2f3e85cc7 Mon Sep 17 00:00:00 2001
From: Nicole Aschenbrenner <[email protected]>
Date: Tue, 9 Jun 2026 10:06:13 -0500
Subject: [PATCH] [OpenMP] target-fast implies teams/threads oversubscription

Enable -fopenmp-assume-teams-oversubscription and
-fopenmp-assume-threads-oversubscription by default under
-fopenmp-target-fast. This is groundwork for the upcoming no-loop
support, which depends on these assumptions being in effect.

Adds driver test coverage for both.
---
 clang/lib/Driver/ToolChains/Clang.cpp       |  4 ++--
 clang/test/Driver/openmp-target-fast-flag.c | 22 ++++++++++++++-------
 2 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/Clang.cpp 
b/clang/lib/Driver/ToolChains/Clang.cpp
index 418d540895681..61eb5a0bd93ce 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -6983,11 +6983,11 @@ void Clang::ConstructJob(Compilation &C, const 
JobAction &JA,
       // thread and team counts in the device.
       if (Args.hasFlag(options::OPT_fopenmp_assume_teams_oversubscription,
                        options::OPT_fno_openmp_assume_teams_oversubscription,
-                       /*Default=*/false))
+                       /*Default=*/TargetFastUsed))
         CmdArgs.push_back("-fopenmp-assume-teams-oversubscription");
       if (Args.hasFlag(options::OPT_fopenmp_assume_threads_oversubscription,
                        options::OPT_fno_openmp_assume_threads_oversubscription,
-                       /*Default=*/false))
+                       /*Default=*/TargetFastUsed))
         CmdArgs.push_back("-fopenmp-assume-threads-oversubscription");
 
       // Handle -fopenmp-assume-no-thread-state (implied by target-fast)
diff --git a/clang/test/Driver/openmp-target-fast-flag.c 
b/clang/test/Driver/openmp-target-fast-flag.c
index 0390790b3f533..d6b0c262f8431 100644
--- a/clang/test/Driver/openmp-target-fast-flag.c
+++ b/clang/test/Driver/openmp-target-fast-flag.c
@@ -1,25 +1,25 @@
 // REQUIRES: x86-registered-target, amdgpu-registered-target
 
 // RUN:   %clang -### -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa 
-Xopenmp-target=amdgcn-amd-amdhsa -march=gfx90a -nogpulib %s -O0 2>&1 \
-// RUN:   | FileCheck 
-check-prefixes=DefaultTFast,DefaultTState,DefaultNoNestParallel %s
+// RUN:   | FileCheck 
-check-prefixes=DefaultTFast,DefaultTState,DefaultNoNestParallel,DefaultTeamsOver,DefaultThreadsOver
 %s
 
 // RUN:   %clang -### -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa 
-Xopenmp-target=amdgcn-amd-amdhsa -march=gfx90a -nogpulib -O0 
-fopenmp-target-fast %s 2>&1 \
-// RUN:   | FileCheck -check-prefixes=TState,NestParallel %s
+// RUN:   | FileCheck 
-check-prefixes=TState,NestParallel,TeamsOver,ThreadsOver %s
 
 // RUN:   %clang -### -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa 
-Xopenmp-target=amdgcn-amd-amdhsa -march=gfx90a -nogpulib -O3 %s 2>&1 \
-// RUN:   | FileCheck 
-check-prefixes=O3,DefaultTFast,DefaultTState,DefaultNoNestParallel %s
+// RUN:   | FileCheck 
-check-prefixes=O3,DefaultTFast,DefaultTState,DefaultNoNestParallel,DefaultTeamsOver,DefaultThreadsOver
 %s
 
 // RUN:   %clang -### -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa 
-Xopenmp-target=amdgcn-amd-amdhsa -march=gfx90a -nogpulib -O3 
-fno-openmp-target-fast %s 2>&1 \
-// RUN:   | FileCheck -check-prefixes=O3,DefaultTState,DefaultNoNestParallel %s
+// RUN:   | FileCheck 
-check-prefixes=O3,DefaultTState,DefaultNoNestParallel,DefaultTeamsOver,DefaultThreadsOver
 %s
 
 // RUN:   %clang -### -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa 
-Xopenmp-target=amdgcn-amd-amdhsa -march=gfx90a -nogpulib -Ofast %s 2>&1 \
-// RUN:   | FileCheck -check-prefixes=OFast,TState,NestParallel %s
+// RUN:   | FileCheck 
-check-prefixes=OFast,TState,NestParallel,TeamsOver,ThreadsOver %s
 
 // RUN:   %clang -### -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa 
-Xopenmp-target=amdgcn-amd-amdhsa -march=gfx90a -nogpulib -Ofast 
-fno-openmp-target-fast %s 2>&1 \
-// RUN:   | FileCheck 
-check-prefixes=OFast,DefaultTState,DefaultNoNestParallel %s
+// RUN:   | FileCheck 
-check-prefixes=OFast,DefaultTState,DefaultNoNestParallel,DefaultTeamsOver,DefaultThreadsOver
 %s
 
 // RUN:   %clang -### -fopenmp=libomp -fopenmp-targets=amdgcn-amd-amdhsa 
-Xopenmp-target=amdgcn-amd-amdhsa -march=gfx90a -nogpulib -O0 
-fno-openmp-target-fast -fopenmp-target-fast %s 2>&1 \
-// RUN:   | FileCheck -check-prefixes=TState,NestParallel %s
+// RUN:   | FileCheck 
-check-prefixes=TState,NestParallel,TeamsOver,ThreadsOver %s
 
 // O3: -O3
 // OFast: -Ofast
@@ -33,3 +33,11 @@
 // NestParallel: "-fopenmp-assume-no-nested-parallelism"
 // NestParallel-NOT: "-fno-openmp-assume-no-nested-parallelism"
 // DefaultNoNestParallel-NOT: 
{{"-f(-no-)?openmp-assume-no-nested-parallelism"}}
+
+// TeamsOver: "-fopenmp-assume-teams-oversubscription"
+// TeamsOver-NOT: "-fno-openmp-assume-teams-oversubscription"
+// DefaultTeamsOver-NOT: {{"-f(no-)?openmp-assume-teams-oversubscription"}}
+
+// ThreadsOver: "-fopenmp-assume-threads-oversubscription"
+// ThreadsOver-NOT: "-fno-openmp-assume-threads-oversubscription"
+// DefaultThreadsOver-NOT: {{"-f(no-)?openmp-assume-threads-oversubscription"}}

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to