llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang @llvm/pr-subscribers-clang-driver Author: Kiran Chandramohan (kiranchandramohan) <details> <summary>Changes</summary> This is subject to agreement by the Flang community (https://discourse.llvm.org/t/rfc-deprecate-ofast-in-flang/80243). --- Full diff: https://github.com/llvm/llvm-project/pull/101701.diff 4 Files Affected: - (modified) clang/include/clang/Basic/DiagnosticDriverKinds.td (+4) - (modified) clang/include/clang/Driver/Options.td (+4-1) - (modified) clang/lib/Driver/ToolChains/Flang.cpp (+1) - (modified) flang/test/Driver/fast-math.f90 (+5) ``````````diff diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td index 3d8240f8357b4..e04e74de07435 100644 --- a/clang/include/clang/Basic/DiagnosticDriverKinds.td +++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td @@ -448,6 +448,10 @@ def warn_drv_deprecated_arg_ofast : Warning< "argument '-Ofast' is deprecated; use '-O3 -ffast-math' for the same behavior," " or '-O3' to enable only conforming optimizations">, InGroup<DeprecatedOFast>; +def warn_drv_deprecated_arg_ofast_for_flang : Warning< + "argument '-Ofast' is deprecated; use '-O3 -ffast-math -fstack-arrays' for the same behavior," + " or '-O3 -fstack-arrays' to enable only conforming optimizations">, + InGroup<DeprecatedOFast>; def warn_drv_deprecated_custom : Warning< "argument '%0' is deprecated, %1">, InGroup<Deprecated>; def warn_drv_assuming_mfloat_abi_is : Warning< diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index f690467bb82cd..def5a6db5e6ce 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -933,7 +933,10 @@ def O_flag : Flag<["-"], "O">, Visibility<[ClangOption, CC1Option, FC1Option]>, def Ofast : Joined<["-"], "Ofast">, Group<O_Group>, Visibility<[ClangOption, CC1Option, FlangOption]>, HelpText<"Deprecated; use '-O3 -ffast-math' for the same behavior," - " or '-O3' to enable only conforming optimizations">; + " or '-O3' to enable only conforming optimizations">, + HelpTextForVariants<[FlangOption], + "Deprecated; use '-O3 -ffast-math -fstack-arrays' for the same behavior," + " or '-O3 -fstack-arrays' to enable only conforming optimizations">; def P : Flag<["-"], "P">, Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>, Group<Preprocessor_Group>, diff --git a/clang/lib/Driver/ToolChains/Flang.cpp b/clang/lib/Driver/ToolChains/Flang.cpp index 492d5a3021d9b..c5ec3c26aed9a 100644 --- a/clang/lib/Driver/ToolChains/Flang.cpp +++ b/clang/lib/Driver/ToolChains/Flang.cpp @@ -867,6 +867,7 @@ void Flang::ConstructJob(Compilation &C, const JobAction &JA, D.Diag(diag::warn_O4_is_O3); } else if (A->getOption().matches(options::OPT_Ofast)) { CmdArgs.push_back("-O3"); + D.Diag(diag::warn_drv_deprecated_arg_ofast_for_flang); } else { A->render(Args, CmdArgs); } diff --git a/flang/test/Driver/fast-math.f90 b/flang/test/Driver/fast-math.f90 index 47175488b98bc..e677432bc04fa 100644 --- a/flang/test/Driver/fast-math.f90 +++ b/flang/test/Driver/fast-math.f90 @@ -1,6 +1,11 @@ ! Test for correct forwarding of fast-math flags from the compiler driver to the ! frontend driver +! Check warning message for Ofast deprecation +! RUN: %flang -Ofast -### %s -o %t 2>&1 | FileCheck %s +! CHECK: warning: argument '-Ofast' is deprecated; use '-O3 -ffast-math -fstack-arrays' for the same behavior, or '-O3 +! -fstack-arrays' to enable only conforming optimizations [-Wdeprecated-ofast] + ! -Ofast => -ffast-math -O3 -fstack-arrays ! RUN: %flang -Ofast -fsyntax-only -### %s -o %t 2>&1 \ ! RUN: | FileCheck --check-prefix=CHECK-OFAST %s `````````` </details> https://github.com/llvm/llvm-project/pull/101701 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits