llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Nicole Aschenbrenner (nicebert) <details> <summary>Changes</summary> 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. --- Full diff: https://github.com/llvm/llvm-project/pull/177600.diff 2 Files Affected: - (modified) clang/include/clang/Options/Options.td (+6) - (modified) clang/lib/Driver/ToolChains/Clang.cpp (+10-2) ``````````diff 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)) `````````` </details> https://github.com/llvm/llvm-project/pull/177600 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
