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

Add -fno-openmp-assume-no-thread-state and
-fno-openmp-assume-no-nested-parallelism flags to allow explicit disabling of 
these assumptions.

This follows Clang's standard pattern of providing both positive and negative 
variants for optimization flags, enabling users to override these assumptions 
when needed (e.g., for debugging or when defaults change).

Part of systematic convergence initiative to minimize differences between LLVM 
mainline and ROCm fork.

>From d1b2d82d091ea95e52ca36c96522dd4133f285c4 Mon Sep 17 00:00:00 2001
From: Dhruva Chakrabarti <[email protected]>
Date: Fri, 23 Jan 2026 03:54:55 -0600
Subject: [PATCH] [OpenMP] Add negative flag variants for assume options

Add -fno-openmp-assume-no-thread-state and
-fno-openmp-assume-no-nested-parallelism flags to allow
explicit disabling of these assumptions.

This follows Clang's standard pattern of providing both
positive and negative variants for optimization flags,
enabling users to override these assumptions when needed
(e.g., for debugging or when defaults change).

Part of systematic convergence initiative to minimize differences
between LLVM mainline and ROCm fork.
---
 clang/include/clang/Options/Options.td |  6 ++++++
 clang/lib/Driver/ToolChains/Clang.cpp  | 12 ++++++++++--
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/clang/include/clang/Options/Options.td 
b/clang/include/clang/Options/Options.td
index 88ae8a7286ee9..c3dbe47bfb138 100644
--- a/clang/include/clang/Options/Options.td
+++ b/clang/include/clang/Options/Options.td
@@ -3974,9 +3974,15 @@ def fno_openmp_assume_threads_oversubscription : 
Flag<["-"], "fno-openmp-assume-
 def fopenmp_assume_no_thread_state : Flag<["-"], 
"fopenmp-assume-no-thread-state">,
   HelpText<"Assert no thread in a parallel region modifies an ICV">,
   MarshallingInfoFlag<LangOpts<"OpenMPNoThreadState">>;
+def fno_openmp_assume_no_thread_state : Flag<["-"], 
"fno-openmp-assume-no-thread-state">,
+  HelpText<"Assert that a thread in a parallel region may modify an ICV">,
+  MarshallingInfoNegativeFlag<LangOpts<"OpenMPNoThreadState">>;
 def fopenmp_assume_no_nested_parallelism : Flag<["-"], 
"fopenmp-assume-no-nested-parallelism">,
   HelpText<"Assert no nested parallel regions in the GPU">,
   MarshallingInfoFlag<LangOpts<"OpenMPNoNestedParallelism">>;
+def fno_openmp_assume_no_nested_parallelism : Flag<["-"], 
"fno-openmp-assume-no-nested-parallelism">,
+  HelpText<"Assert that a nested parallel region may be used in the GPU">,
+  MarshallingInfoNegativeFlag<LangOpts<"OpenMPNoNestedParallelism">>;
 
 } // let Group = f_Group
 } // let Visibility = [ClangOption, CC1Option, FC1Option]
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp 
b/clang/lib/Driver/ToolChains/Clang.cpp
index 41ee88fd5501a..b9523cbfb577d 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -6725,10 +6725,18 @@ void Clang::ConstructJob(Compilation &C, const 
JobAction &JA,
                        options::OPT_fno_openmp_assume_threads_oversubscription,
                        /*Default=*/false))
         CmdArgs.push_back("-fopenmp-assume-threads-oversubscription");
-      if (Args.hasArg(options::OPT_fopenmp_assume_no_thread_state))
+      if (Args.hasFlag(options::OPT_fopenmp_assume_no_thread_state,
+                       options::OPT_fno_openmp_assume_no_thread_state,
+                       /*Default=*/false))
         CmdArgs.push_back("-fopenmp-assume-no-thread-state");
-      if (Args.hasArg(options::OPT_fopenmp_assume_no_nested_parallelism))
+      else
+        CmdArgs.push_back("-fno-openmp-assume-no-thread-state");
+      if (Args.hasFlag(options::OPT_fopenmp_assume_no_nested_parallelism,
+                       options::OPT_fno_openmp_assume_no_nested_parallelism,
+                       /*Default=*/false))
         CmdArgs.push_back("-fopenmp-assume-no-nested-parallelism");
+      else
+        CmdArgs.push_back("-fno-openmp-assume-no-nested-parallelism");
       if (Args.hasArg(options::OPT_fopenmp_offload_mandatory))
         CmdArgs.push_back("-fopenmp-offload-mandatory");
       if (Args.hasArg(options::OPT_fopenmp_force_usm))

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

Reply via email to