https://github.com/nicebert updated https://github.com/llvm/llvm-project/pull/177600
>From bd3ba29769dcb608a241bfc0215b1182591f464b 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 | 4 ++++ 2 files changed, 10 insertions(+) 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..81ebc074f694f 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -6727,8 +6727,12 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back("-fopenmp-assume-threads-oversubscription"); if (Args.hasArg(options::OPT_fopenmp_assume_no_thread_state)) CmdArgs.push_back("-fopenmp-assume-no-thread-state"); + else if (Args.hasArg(options::OPT_fno_openmp_assume_no_thread_state)) + CmdArgs.push_back("-fno-openmp-assume-no-thread-state"); if (Args.hasArg(options::OPT_fopenmp_assume_no_nested_parallelism)) CmdArgs.push_back("-fopenmp-assume-no-nested-parallelism"); + else if (Args.hasArg(options::OPT_fno_openmp_assume_no_nested_parallelism)) + 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
