Straw man: http://reviews.llvm.org/D4636
On Tue, Jul 22, 2014 at 3:30 PM, Reid Kleckner <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 >>> [email protected] >>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >>> >> >> >> _______________________________________________ >> cfe-commits mailing list >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >> >> >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
