diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 1166dd28b8331..bf2163ed7d975 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -816,19 +816,6 @@ def : Flag<["-"], "fno-ident">, Group, Alias, def Qunused_arguments : Flag<["-"], "Qunused-arguments">, Flags<[NoXarchOption, CoreOption]>, HelpText<"Don't emit warning for unused driver arguments">; def Q : Flag<["-"], "Q">, IgnoredGCCCompat; -def Rpass_EQ : Joined<["-"], "Rpass=">, Group, Flags<[CC1Option]>, - HelpText<"Report transformations performed by optimization passes whose " - "name matches the given POSIX regular expression">; -def Rpass_missed_EQ : Joined<["-"], "Rpass-missed=">, Group, - Flags<[CC1Option]>, - HelpText<"Report missed transformations by optimization passes whose " - "name matches the given POSIX regular expression">; -def Rpass_analysis_EQ : Joined<["-"], "Rpass-analysis=">, Group, - Flags<[CC1Option]>, - HelpText<"Report transformation analysis from optimization passes whose " - "name matches the given POSIX regular expression">; -def R_Joined : Joined<["-"], "R">, Group, Flags<[CC1Option, CoreOption]>, - MetaVarName<"">, HelpText<"Enable the specified remark">; def S : Flag<["-"], "S">, Flags<[NoXarchOption,CC1Option,FlangOption,FC1Option]>, Group, HelpText<"Only run preprocess and compilation steps">; def T : JoinedOrSeparate<["-"], "T">, Group, @@ -2888,6 +2875,26 @@ def fno_openmp_target_debug : Flag<["-"], "fno-openmp-target-debug">; } // let Group = f_Group } // let Flags = [CC1Option, FC1Option, NoArgumentUnused] +//===----------------------------------------------------------------------===// +// Optimisation remark options +//===----------------------------------------------------------------------===// + +let Flags = [CC1Option, FC1Option, FlangOption] in { + +def Rpass_EQ : Joined<["-"], "Rpass=">, Group, + HelpText<"Report transformations performed by optimization passes whose " + "name matches the given POSIX regular expression">; +def Rpass_missed_EQ : Joined<["-"], "Rpass-missed=">, Group, + HelpText<"Report missed transformations by optimization passes whose " + "name matches the given POSIX regular expression">; +def Rpass_analysis_EQ : Joined<["-"], "Rpass-analysis=">, Group, + HelpText<"Report transformation analysis from optimization passes whose " + "name matches the given POSIX regular expression">; +def R_Joined : Joined<["-"], "R">, Group, Flags<[CoreOption]>, + MetaVarName<"">, HelpText<"Enable the specified remark">; + +} // let Flags = [CC1Option, FC1Option, FlangOption] + let Flags = [CC1Option, FC1Option, NoArgumentUnused, HelpHidden] in { let Group = f_Group in { diff --git a/clang/lib/Driver/ToolChains/Flang.cpp b/clang/lib/Driver/ToolChains/Flang.cpp index d0ab58bf4a855..11c9d90c701f0 100644 --- a/clang/lib/Driver/ToolChains/Flang.cpp +++ b/clang/lib/Driver/ToolChains/Flang.cpp @@ -518,6 +518,9 @@ void Flang::ConstructJob(Compilation &C, const JobAction &JA, // Add Codegen options addCodegenOptions(Args, CmdArgs); + // Add R Group options + Args.AddAllArgs(CmdArgs, options::OPT_R_Group); + // Remarks can be enabled with any of the `-f.*optimization-record.*` flags. if (willEmitRemarks(Args)) renderRemarksOptions(Args, CmdArgs, Input); diff --git a/flang/test/Driver/driver-help-hidden.f90 b/flang/test/Driver/driver-help-hidden.f90 index 2522a0aee457e..2c70b870ef0a4 100644 --- a/flang/test/Driver/driver-help-hidden.f90 +++ b/flang/test/Driver/driver-help-hidden.f90 @@ -95,6 +95,10 @@ ! CHECK-NEXT: -print-effective-triple Print the effective target triple ! CHECK-NEXT: -print-target-triple Print the normalized target triple ! CHECK-NEXT: -P Disable linemarker output in -E mode +! CHECK-NEXT: -Rpass-analysis= Report transformation analysis from optimization passes whose name matches the given POSIX regular expression +! CHECK-NEXT: -Rpass-missed= Report missed transformations by optimization passes whose name matches the given POSIX regular expression +! CHECK-NEXT: -Rpass= Report transformations performed by optimization passes whose name matches the given POSIX regular expression +! CHECK-NEXT: -R Enable the specified remark ! CHECK-NEXT: -save-temps= Save intermediate compilation results. ! CHECK-NEXT: -save-temps Save intermediate compilation results ! CHECK-NEXT: -std= Language standard to compile for diff --git a/flang/test/Driver/driver-help.f90 b/flang/test/Driver/driver-help.f90 index c6144e71f9f6b..dc9db6be89fe5 100644 --- a/flang/test/Driver/driver-help.f90 +++ b/flang/test/Driver/driver-help.f90 @@ -91,6 +91,10 @@ ! HELP-NEXT: -print-effective-triple Print the effective target triple ! HELP-NEXT: -print-target-triple Print the normalized target triple ! HELP-NEXT: -P Disable linemarker output in -E mode +! HELP-NEXT: -Rpass-analysis= Report transformation analysis from optimization passes whose name matches the given POSIX regular expression +! HELP-NEXT: -Rpass-missed= Report missed transformations by optimization passes whose name matches the given POSIX regular expression +! HELP-NEXT: -Rpass= Report transformations performed by optimization passes whose name matches the given POSIX regular expression +! HELP-NEXT: -R Enable the specified remark ! HELP-NEXT: -save-temps= Save intermediate compilation results. ! HELP-NEXT: -save-temps Save intermediate compilation results ! HELP-NEXT: -std= Language standard to compile for @@ -214,6 +218,10 @@ ! HELP-FC1-NEXT: -pic-level Value for __PIC__ ! HELP-FC1-NEXT: -plugin Use the named plugin action instead of the default action (use "help" to list available options) ! HELP-FC1-NEXT: -P Disable linemarker output in -E mode +! HELP-FC1-NEXT: -Rpass-analysis= Report transformation analysis from optimization passes whose name matches the given POSIX regular expression +! HELP-FC1-NEXT: -Rpass-missed= Report missed transformations by optimization passes whose name matches the given POSIX regular expression +! HELP-FC1-NEXT: -Rpass= Report transformations performed by optimization passes whose name matches the given POSIX regular expression +! HELP-FC1-NEXT: -R Enable the specified remark ! HELP-FC1-NEXT: -save-temps= Save intermediate compilation results. ! HELP-FC1-NEXT: -save-temps Save intermediate compilation results ! HELP-FC1-NEXT: -std= Language standard to compile for diff --git a/flang/test/Driver/frontend-forwarding.f90 b/flang/test/Driver/frontend-forwarding.f90 index b57eb3ae33e0a..520f4898feb0a 100644 --- a/flang/test/Driver/frontend-forwarding.f90 +++ b/flang/test/Driver/frontend-forwarding.f90 @@ -22,6 +22,13 @@ ! RUN: -fppc-native-vector-element-order \ ! RUN: -mllvm -print-before-all \ ! RUN: -save-temps=obj \ +! RUN: -Rpass \ +! RUN: -Rpass-missed \ +! RUN: -Rpass-analysis \ +! RUN: -Rno-pass \ +! RUN: -Reverything \ +! RUN: -Rno-everything \ +! RUN: -Rpass=inline \ ! RUN: -P \ ! RUN: | FileCheck %s @@ -44,5 +51,12 @@ ! CHECK: "-flang-experimental-hlfir" ! CHECK: "-fno-ppc-native-vector-element-order" ! CHECK: "-fppc-native-vector-element-order" +! CHECK: "-Rpass" +! CHECK: "-Rpass-missed" +! CHECK: "-Rpass-analysis" +! CHECK: "-Rno-pass" +! CHECK: "-Reverything" +! CHECK: "-Rno-everything" +! CHECK: "-Rpass=inline" ! CHECK: "-mllvm" "-print-before-all" ! CHECK: "-save-temps=obj"