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

Reid Kleckner rnk at google.com
Tue Jul 22 20:15:24 PDT 2014


Straw man: http://reviews.llvm.org/D4636


On Tue, Jul 22, 2014 at 3:30 PM, Reid Kleckner <rnk at google.com> wrote:

> What do you think about -Wignored-optimization-flag? Maybe
> -Wignored-optimization-argument for consistency with
> -Winvalid-command-line-argument?
>
>
> On Tue, Jul 22, 2014 at 3:07 PM, Nick Lewycky <nlewycky at google.com> wrote:
>
>> 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
>>>
>>
>>
>> _______________________________________________
>> 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/51f63ff3/attachment.html>


More information about the cfe-commits mailing list