r213365 - Moved 25 flags to clang_ignored_gcc_optimization_f_Group. Will display a warning

Nick Lewycky nlewycky at google.com
Tue Jul 22 15:07:08 PDT 2014


Hi! I'd appreciate if we had the ability to turn off warnings about unknown
optimization flags without turning off warnings for other unknown flags.
Could you move these into a more specific warning flag under
Winvalid-command-line?


On 18 July 2014 04:39, Arthur Marble <arthur at info9.net> wrote:

> Author: bubbles231
> Date: Fri Jul 18 06:38:58 2014
> New Revision: 213365
>
> URL: http://llvm.org/viewvc/llvm-project?rev=213365&view=rev
> Log:
> Moved 25 flags to clang_ignored_gcc_optimization_f_Group. Will display a
> warning
> to the user if they try to pass those optimizations. The revision for this
> patch
> is here: http://reviews.llvm.org/D4474. This patch will fix many errors
> in the
> rebuild of Debian with clang. Here is a link to the page for unknown
> arguments:
> http://clang.debian.net/status.php?version=3.4.2&key=UNKNOWN_ARG
>
> Modified:
>     cfe/trunk/include/clang/Driver/Options.td
>     cfe/trunk/test/Driver/clang_f_opts.c
>
> Modified: cfe/trunk/include/clang/Driver/Options.td
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=213365&r1=213364&r2=213365&view=diff
>
> ==============================================================================
> --- cfe/trunk/include/clang/Driver/Options.td (original)
> +++ cfe/trunk/include/clang/Driver/Options.td Fri Jul 18 06:38:58 2014
> @@ -475,11 +475,11 @@ def fencoding_EQ : Joined<["-"], "fencod
>  def ferror_limit_EQ : Joined<["-"], "ferror-limit=">, Group<f_Group>,
> Flags<[CoreOption]>;
>  def fexceptions : Flag<["-"], "fexceptions">, Group<f_Group>,
> Flags<[CC1Option]>,
>    HelpText<"Enable support for exception handling">;
> -def : Flag<["-"], "fexpensive-optimizations">,
> Group<clang_ignored_f_Group>;
> -def : Flag<["-"], "fno-expensive-optimizations">,
> Group<clang_ignored_f_Group>;
> +def : Flag<["-"], "fexpensive-optimizations">,
> Group<clang_ignored_gcc_optimization_f_Group>;
> +def : Flag<["-"], "fno-expensive-optimizations">,
> Group<clang_ignored_gcc_optimization_f_Group>;
>  def fextdirs_EQ : Joined<["-"], "fextdirs=">, Group<f_Group>;
> -def : Flag<["-"], "fdefer-pop">, Group<clang_ignored_f_Group>;
> -def : Flag<["-"], "fno-defer-pop">, Group<clang_ignored_f_Group>;
> +def : Flag<["-"], "fdefer-pop">,
> Group<clang_ignored_gcc_optimization_f_Group>;
> +def : Flag<["-"], "fno-defer-pop">,
> Group<clang_ignored_gcc_optimization_f_Group>;
>  def : Flag<["-"], "fextended-identifiers">, Group<clang_ignored_f_Group>;
>  def : Flag<["-"], "fno-extended-identifiers">, Group<f_Group>,
> Flags<[Unsupported]>;
>  def fhosted : Flag<["-"], "fhosted">, Group<f_Group>;
> @@ -568,12 +568,11 @@ def fgnu_runtime : Flag<["-"], "fgnu-run
>  def fheinous_gnu_extensions : Flag<["-"], "fheinous-gnu-extensions">,
> Flags<[CC1Option]>;
>  def filelist : Separate<["-"], "filelist">, Flags<[LinkerInput]>;
>  def : Flag<["-"], "findirect-virtual-calls">, Alias<fapple_kext>;
> -def finline_functions : Flag<["-"], "finline-functions">,
> Group<clang_ignored_f_Group>;
> +def finline_functions : Flag<["-"], "finline-functions">,
> Group<clang_ignored_gcc_optimization_f_Group>;
>  def finline : Flag<["-"], "finline">, Group<clang_ignored_f_Group>;
>  def finput_charset_EQ : Joined<["-"], "finput-charset=">, Group<f_Group>;
>  def finstrument_functions : Flag<["-"], "finstrument-functions">,
> Group<f_Group>, Flags<[CC1Option]>,
>    HelpText<"Generate calls to instrument function entry and exit">;
> -def : Flag<["-"], "fkeep-inline-functions">, Group<clang_ignored_f_Group>;
>  def flat__namespace : Flag<["-"], "flat_namespace">;
>  def flax_vector_conversions : Flag<["-"], "flax-vector-conversions">,
> Group<f_Group>;
>  def flimited_precision_EQ : Joined<["-"], "flimited-precision=">,
> Group<f_Group>;
> @@ -695,7 +694,6 @@ def fno_exceptions : Flag<["-"], "fno-ex
>  def fno_gnu_keywords : Flag<["-"], "fno-gnu-keywords">, Group<f_Group>,
> Flags<[CC1Option]>;
>  def fno_inline_functions : Flag<["-"], "fno-inline-functions">,
> Group<f_clang_Group>, Flags<[CC1Option]>;
>  def fno_inline : Flag<["-"], "fno-inline">, Group<f_clang_Group>,
> Flags<[CC1Option]>;
> -def : Flag<["-"], "fno-keep-inline-functions">,
> Group<clang_ignored_f_Group>;
>  def fno_lax_vector_conversions : Flag<["-"],
> "fno-lax-vector-conversions">, Group<f_Group>,
>    HelpText<"Disallow implicit conversions between vectors with a
> different number of elements or different element types">,
> Flags<[CC1Option]>;
>  def fno_merge_all_constants : Flag<["-"], "fno-merge-all-constants">,
> Group<f_Group>,
> @@ -814,7 +812,7 @@ def frtti : Flag<["-"], "frtti">, Group<
>  def : Flag<["-"], "fsched-interblock">, Group<clang_ignored_f_Group>;
>  def fshort_enums : Flag<["-"], "fshort-enums">, Group<f_Group>,
> Flags<[CC1Option]>,
>    HelpText<"Allocate to an enum type only as many bytes as it needs for
> the declared range of possible values">;
> -def : Flag<["-"], "freorder-blocks">, Group<clang_ignored_f_Group>;
> +def : Flag<["-"], "freorder-blocks">,
> Group<clang_ignored_gcc_optimization_f_Group>;
>  def fshort_wchar : Flag<["-"], "fshort-wchar">, Group<f_Group>,
> Flags<[CC1Option]>,
>    HelpText<"Force wchar_t to be a short unsigned int">;
>  def fno_short_wchar : Flag<["-"], "fno-short-wchar">, Group<f_Group>,
> Flags<[CC1Option]>,
> @@ -1588,53 +1586,55 @@ multiclass BooleanFFlag<string name> {
>    def _fno : Flag<["-"], "fno-"#name>;
>  }
>
> -def fprofile_dir : Joined<["-"], "fprofile-dir=">,
> Group<clang_ignored_f_Group>;
> +defm : BooleanFFlag<"no-keep-inline-functions">,
> Group<clang_ignored_gcc_optimization_f_Group>;
>
> -defm profile_use : BooleanFFlag<"profile-use">,
> Group<clang_ignored_f_Group>;
> -def fprofile_use_EQ : Joined<["-"], "fprofile-use=">,
> Group<clang_ignored_f_Group>;
> +def fprofile_dir : Joined<["-"], "fprofile-dir=">,
> Group<clang_ignored_gcc_optimization_f_Group>;
> +
> +defm profile_use : BooleanFFlag<"profile-use">,
> Group<clang_ignored_gcc_optimization_f_Group>;
> +def fprofile_use_EQ : Joined<["-"], "fprofile-use=">,
> Group<clang_ignored_gcc_optimization_f_Group>;
>  def fuse_ld_EQ : Joined<["-"], "fuse-ld=">, Group<f_Group>;
>
> -defm align_functions : BooleanFFlag<"align-functions">,
> Group<clang_ignored_f_Group>;
> -def falign_functions_EQ : Joined<["-"], "falign-functions=">,
> Group<clang_ignored_f_Group>;
> +defm align_functions : BooleanFFlag<"align-functions">,
> Group<clang_ignored_gcc_optimization_f_Group>;
> +def falign_functions_EQ : Joined<["-"], "falign-functions=">,
> Group<clang_ignored_gcc_optimization_f_Group>;
>
>  // FIXME: This option should be supported and wired up to our
> diognostics, but
>  // ignore it for now to avoid breaking builds that use it.
>  def fdiagnostics_show_location_EQ : Joined<["-"],
> "fdiagnostics-show-location=">, Group<clang_ignored_f_Group>;
>
>  defm eliminate_unused_debug_types :
> BooleanFFlag<"eliminate-unused-debug-types">, Group<clang_ignored_f_Group>;
> -defm float_store : BooleanFFlag<"float-store">,
> Group<clang_ignored_f_Group>;
> +defm float_store : BooleanFFlag<"float-store">,
> Group<clang_ignored_gcc_optimization_f_Group>;
>  defm function_attribute_list : BooleanFFlag<"function-attribute-list">,
> Group<clang_ignored_f_Group>;
> -defm gcse : BooleanFFlag<"gcse">, Group<clang_ignored_f_Group>;
> +defm gcse : BooleanFFlag<"gcse">,
> Group<clang_ignored_gcc_optimization_f_Group>;
>  defm gnu : BooleanFFlag<"gnu">, Group<clang_ignored_f_Group>;
>  defm ident : BooleanFFlag<"ident">, Group<clang_ignored_f_Group>;
>  defm implicit_templates : BooleanFFlag<"implicit-templates">,
> Group<clang_ignored_f_Group>;
>  def finline_limit_EQ : Joined<["-"], "finline-limit=">,
> Group<clang_ignored_gcc_optimization_f_Group>;
>  defm finline_limit : BooleanFFlag<"inline-limit">,
> Group<clang_ignored_gcc_optimization_f_Group>;
> -defm ivopts : BooleanFFlag<"ivopts">, Group<clang_ignored_f_Group>;
> +defm ivopts : BooleanFFlag<"ivopts">,
> Group<clang_ignored_gcc_optimization_f_Group>;
>  defm non_call_exceptions : BooleanFFlag<"non-call-exceptions">,
> Group<clang_ignored_f_Group>;
>  defm permissive : BooleanFFlag<"permissive">,
> Group<clang_ignored_f_Group>;
> -defm prefetch_loop_arrays : BooleanFFlag<"prefetch-loop-arrays">,
> Group<clang_ignored_f_Group>;
> +defm prefetch_loop_arrays : BooleanFFlag<"prefetch-loop-arrays">,
> Group<clang_ignored_gcc_optimization_f_Group>;
>  defm printf : BooleanFFlag<"printf">, Group<clang_ignored_f_Group>;
>  defm profile : BooleanFFlag<"profile">, Group<clang_ignored_f_Group>;
> -defm profile_correction : BooleanFFlag<"profile-correction">,
> Group<clang_ignored_f_Group>;
> +defm profile_correction : BooleanFFlag<"profile-correction">,
> Group<clang_ignored_gcc_optimization_f_Group>;
>  defm profile_generate_sampling :
> BooleanFFlag<"profile-generate-sampling">, Group<clang_ignored_f_Group>;
>  defm profile_reusedist : BooleanFFlag<"profile-reusedist">,
> Group<clang_ignored_f_Group>;
> -defm profile_values : BooleanFFlag<"profile-values">,
> Group<clang_ignored_f_Group>;
> +defm profile_values : BooleanFFlag<"profile-values">,
> Group<clang_ignored_gcc_optimization_f_Group>;
>  defm regs_graph : BooleanFFlag<"regs-graph">,
> Group<clang_ignored_f_Group>;
>  defm ripa : BooleanFFlag<"ripa">, Group<clang_ignored_f_Group>;
> -defm rounding_math : BooleanFFlag<"rounding-math">,
> Group<clang_ignored_f_Group>;
> -defm schedule_insns : BooleanFFlag<"schedule-insns">,
> Group<clang_ignored_f_Group>;
> +defm rounding_math : BooleanFFlag<"rounding-math">,
> Group<clang_ignored_gcc_optimization_f_Group>;
> +defm schedule_insns : BooleanFFlag<"schedule-insns">,
> Group<clang_ignored_gcc_optimization_f_Group>;
>  defm see : BooleanFFlag<"see">, Group<clang_ignored_f_Group>;
> -defm signaling_nans : BooleanFFlag<"signaling-nans">,
> Group<clang_ignored_f_Group>;
> +defm signaling_nans : BooleanFFlag<"signaling-nans">,
> Group<clang_ignored_gcc_optimization_f_Group>;
>  defm spec_constr_count : BooleanFFlag<"spec-constr-count">,
> Group<clang_ignored_f_Group>;
>  defm strength_reduce :
> -    BooleanFFlag<"strength-reduce">, Group<clang_ignored_f_Group>;
> +    BooleanFFlag<"strength-reduce">,
> Group<clang_ignored_gcc_optimization_f_Group>;
>  defm tls_model : BooleanFFlag<"tls-model">, Group<clang_ignored_f_Group>;
> -defm tracer : BooleanFFlag<"tracer">, Group<clang_ignored_f_Group>;
> +defm tracer : BooleanFFlag<"tracer">,
> Group<clang_ignored_gcc_optimization_f_Group>;
>  defm tree_salias : BooleanFFlag<"tree-salias">,
> Group<clang_ignored_f_Group>;
>  defm tree_vectorizer_verbose : BooleanFFlag<"tree-vectorizer-verbose">,
> Group<clang_ignored_f_Group>;
> -defm unroll_all_loops : BooleanFFlag<"unroll-all-loops">,
> Group<clang_ignored_f_Group>;
> -defm unswitch_loops : BooleanFFlag<"unswitch-loops">,
> Group<clang_ignored_f_Group>;
> +defm unroll_all_loops : BooleanFFlag<"unroll-all-loops">,
> Group<clang_ignored_gcc_optimization_f_Group>;
> +defm unswitch_loops : BooleanFFlag<"unswitch-loops">,
> Group<clang_ignored_gcc_optimization_f_Group>;
>
>
>  // gfortran options that we recognize in the driver and pass along when
>
> Modified: cfe/trunk/test/Driver/clang_f_opts.c
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/clang_f_opts.c?rev=213365&r1=213364&r2=213365&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/Driver/clang_f_opts.c (original)
> +++ cfe/trunk/test/Driver/clang_f_opts.c Fri Jul 18 06:38:58 2014
> @@ -170,10 +170,60 @@
>  // IGNORE-NOT: error: unknown argument
>
>  // Test that the warning is displayed on these.
> -// RUN: %clang -### -finline-limit=1000 %s 2>&1 | FileCheck
> --check-prefix=CHECK-WARNING1 %s
> -// RUN: %clang -### -finline-limit %s 2>&1 | FileCheck
> --check-prefix=CHECK-WARNING2 %s
> -// CHECK-WARNING1: optimization flag '-finline-limit=1000' is not
> supported
> -// CHECK-WARNING2: optimization flag '-finline-limit' is not supported
> +// RUN: %clang -###
>     \
> +// RUN: -finline-limit=1000
>     \
> +// RUN: -finline-limit
>      \
> +// RUN: -fexpensive-optimizations
>     \
> +// RUN: -fno-expensive-optimizations
>      \
> +// RUN: -fno-defer-pop
>      \
> +// RUN: -finline-functions
>      \
> +// RUN: -fno-keep-inline-functions
>      \
> +// RUN: -freorder-blocks
>      \
> +// RUN: -fprofile-dir=/rand/dir
>     \
> +// RUN: -fprofile-use
>     \
> +// RUN: -fprofile-use=/rand/dir
>     \
> +// RUN: -falign-functions
>     \
> +// RUN: -falign-functions=1
>     \
> +// RUN: -ffloat-store
>     \
> +// RUN: -fgcse
>      \
> +// RUN: -fivopts
>      \
> +// RUN: -fprefetch-loop-arrays
>      \
> +// RUN: -fprofile-correction
>      \
> +// RUN: -fprofile-values
>      \
> +// RUN: -frounding-math
>     \
> +// RUN: -fschedule-insns
>      \
> +// RUN: -fsignaling-nans
>      \
> +// RUN: -fstrength-reduce
>     \
> +// RUN: -ftracer
>      \
> +// RUN: -funroll-all-loops
>      \
> +// RUN: -funswitch-loops
>      \
> +// RUN: %s 2>&1 | FileCheck --check-prefix=CHECK-WARNING %s
> +// CHECK-WARNING-DAG: optimization flag '-finline-limit=1000' is not
> supported
> +// CHECK-WARNING-DAG: optimization flag '-finline-limit' is not supported
> +// CHECK-WARNING-DAG: optimization flag '-fexpensive-optimizations' is
> not supported
> +// CHECK-WARNING-DAG: optimization flag '-fno-expensive-optimizations' is
> not supported
> +// CHECK-WARNING-DAG: optimization flag '-fno-defer-pop' is not supported
> +// CHECK-WARNING-DAG: optimization flag '-finline-functions' is not
> supported
> +// CHECK-WARNING-DAG: optimization flag '-fno-keep-inline-functions' is
> not supported
> +// CHECK-WARNING-DAG: optimization flag '-freorder-blocks' is not
> supported
> +// CHECK-WARNING-DAG: optimization flag '-fprofile-dir=/rand/dir' is not
> supported
> +// CHECK-WARNING-DAG: optimization flag '-fprofile-use' is not supported
> +// CHECK-WARNING-DAG: optimization flag '-fprofile-use=/rand/dir' is not
> supported
> +// CHECK-WARNING-DAG: optimization flag '-falign-functions' is not
> supported
> +// CHECK-WARNING-DAG: optimization flag '-falign-functions=1' is not
> supported
> +// CHECK-WARNING-DAG: optimization flag '-ffloat-store' is not supported
> +// CHECK-WARNING-DAG: optimization flag '-fgcse' is not supported
> +// CHECK-WARNING-DAG: optimization flag '-fivopts' is not supported
> +// CHECK-WARNING-DAG: optimization flag '-fprefetch-loop-arrays' is not
> supported
> +// CHECK-WARNING-DAG: optimization flag '-fprofile-correction' is not
> supported
> +// CHECK-WARNING-DAG: optimization flag '-fprofile-values' is not
> supported
> +// CHECK-WARNING-DAG: optimization flag '-frounding-math' is not supported
> +// CHECK-WARNING-DAG: optimization flag '-fschedule-insns' is not
> supported
> +// CHECK-WARNING-DAG: optimization flag '-fsignaling-nans' is not
> supported
> +// CHECK-WARNING-DAG: optimization flag '-fstrength-reduce' is not
> supported
> +// CHECK-WARNING-DAG: optimization flag '-ftracer' is not supported
> +// CHECK-WARNING-DAG: optimization flag '-funroll-all-loops' is not
> supported
> +// CHECK-WARNING-DAG: optimization flag '-funswitch-loops' is not
> supported
>
>  // Test that we mute the warning on these
>  // RUN: %clang -### -finline-limit=1000
> -Wno-invalid-command-line-argument              \
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140722/648237e2/attachment.html>


More information about the cfe-commits mailing list