From 3713f2e213602fdc5119c3b9ece371330ceeac30 Mon Sep 17 00:00:00 2001 From: Martin Liska Date: Tue, 12 Jun 2018 16:21:10 +0200 Subject: [PATCH] Come up with Deprecated option flag. 2018-06-12 Martin Liska * doc/options.texi: Document Deprecated option flag. 2018-06-12 Martin Liska * config/i386/i386.opt: Make MPX-related options as Deprecated. * opt-functions.awk: Handle Deprecated flag. * opts-common.c (decode_cmdline_option): Handle cl_deprecated and report error. (read_cmdline_option): Report warning for a deprecated option. * opts.h (struct cl_option): Add new field cl_deprecated. (CL_ERR_DEPRECATED): New. 2018-06-12 Martin Liska * c.opt: Make MPX-related options as Deprecated. 2018-06-12 Martin Liska * g++.dg/opt/mpx.C: New test. * gcc.target/i386/mpx.c: New test. From-SVN: r261497 --- gcc/ChangeLog | 14 ++++++++++ gcc/c-family/ChangeLog | 4 +++ gcc/c-family/c.opt | 42 ++++++++++++++--------------- gcc/config/i386/i386.opt | 2 +- gcc/doc/options.texi | 4 +++ gcc/opt-functions.awk | 3 ++- gcc/opts-common.c | 10 +++++++ gcc/opts.h | 3 +++ gcc/testsuite/ChangeLog | 5 ++++ gcc/testsuite/g++.dg/opt/mpx.C | 5 ++++ gcc/testsuite/gcc.target/i386/mpx.c | 3 +++ 11 files changed, 72 insertions(+), 23 deletions(-) create mode 100644 gcc/testsuite/g++.dg/opt/mpx.C create mode 100644 gcc/testsuite/gcc.target/i386/mpx.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b4da50f338d..0fb4ea82c50 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +2018-06-12 Martin Liska + + * config/i386/i386.opt: Make MPX-related options as Deprecated. + * opt-functions.awk: Handle Deprecated flag. + * opts-common.c (decode_cmdline_option): Handle cl_deprecated + and report error. + (read_cmdline_option): Report warning for a deprecated option. + * opts.h (struct cl_option): Add new field cl_deprecated. + (CL_ERR_DEPRECATED): New. + +2018-06-12 Martin Liska + + * doc/options.texi: Document Deprecated option flag. + 2018-06-12 Claudiu Zissulescu * config/arc/arc-arch.h (arc_extras): New enum. diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 0ac89d432da..9ef0a12eb6a 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,7 @@ +2018-06-12 Martin Liska + + * c.opt: Make MPX-related options as Deprecated. + 2018-06-08 David Malcolm * c-pretty-print.c (c_pretty_printer::statement): Use TDF_NONE diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt index 1d7eafff1f7..b4aefd8d5f6 100644 --- a/gcc/c-family/c.opt +++ b/gcc/c-family/c.opt @@ -409,7 +409,7 @@ C ObjC C++ ObjC++ Var(warn_char_subscripts) Warning LangEnabledBy(C ObjC C++ Obj Warn about subscripts whose type is \"char\". Wchkp -C ObjC C++ ObjC++ Var(warn_chkp) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall) +C ObjC C++ ObjC++ Var(warn_chkp) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall) Deprecated Deprecated in GCC 9. This switch has no effect. Wclobbered @@ -1259,86 +1259,86 @@ C ObjC C++ ObjC++ Where shorter, use canonicalized paths to systems headers. fcheck-pointer-bounds -C ObjC C++ ObjC++ LTO Report Var(flag_check_pointer_bounds) +C ObjC C++ ObjC++ LTO Report Var(flag_check_pointer_bounds) Deprecated Deprecated in GCC 9. This switch has no effect. fchkp-check-incomplete-type -C ObjC C++ ObjC++ LTO Report Var(flag_chkp_incomplete_type) Init(1) +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_incomplete_type) Init(1) Deprecated Deprecated in GCC 9. This switch has no effect. fchkp-zero-input-bounds-for-main -C ObjC C++ ObjC++ LTO Report Var(flag_chkp_zero_input_bounds_for_main) Init(0) +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_zero_input_bounds_for_main) Init(0) Deprecated Deprecated in GCC 9. This switch has no effect. fchkp-first-field-has-own-bounds -C ObjC C++ ObjC++ LTO RejectNegative Report Var(flag_chkp_first_field_has_own_bounds) +C ObjC C++ ObjC++ LTO RejectNegative Report Var(flag_chkp_first_field_has_own_bounds) Deprecated Deprecated in GCC 9. This switch has no effect. fchkp-narrow-bounds -C ObjC C++ ObjC++ LTO Report Var(flag_chkp_narrow_bounds) Init(1) +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_narrow_bounds) Init(1) Deprecated Deprecated in GCC 9. This switch has no effect. fchkp-narrow-to-innermost-array -C ObjC C++ ObjC++ LTO RejectNegative Report Var(flag_chkp_narrow_to_innermost_arrray) +C ObjC C++ ObjC++ LTO RejectNegative Report Var(flag_chkp_narrow_to_innermost_arrray) Deprecated Deprecated in GCC 9. This switch has no effect. fchkp-flexible-struct-trailing-arrays -C ObjC C++ ObjC++ LTO Report Var(flag_chkp_flexible_struct_trailing_arrays) +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_flexible_struct_trailing_arrays) Deprecated Deprecated in GCC 9. This switch has no effect. fchkp-optimize C ObjC C++ ObjC++ LTO Report Var(flag_chkp_optimize) Init(-1) fchkp-use-fast-string-functions -C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_fast_string_functions) Init(0) +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_fast_string_functions) Init(0) Deprecated Deprecated in GCC 9. This switch has no effect. fchkp-use-nochk-string-functions -C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_nochk_string_functions) Init(0) +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_nochk_string_functions) Init(0) Deprecated Deprecated in GCC 9. This switch has no effect. fchkp-use-static-bounds -C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_static_bounds) Init(1) +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_static_bounds) Init(1) Deprecated Deprecated in GCC 9. This switch has no effect. fchkp-use-static-const-bounds -C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_static_const_bounds) Init(-1) +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_static_const_bounds) Init(-1) Deprecated Deprecated in GCC 9. This switch has no effect. fchkp-treat-zero-dynamic-size-as-infinite -C ObjC C++ ObjC++ LTO Report Var(flag_chkp_zero_dynamic_size_as_infinite) Init(0) +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_zero_dynamic_size_as_infinite) Init(0) Deprecated Deprecated in GCC 9. This switch has no effect. fchkp-check-read -C ObjC C++ ObjC++ LTO Report Var(flag_chkp_check_read) Init(1) +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_check_read) Init(1) Deprecated Deprecated in GCC 9. This switch has no effect. fchkp-check-write -C ObjC C++ ObjC++ LTO Report Var(flag_chkp_check_write) Init(1) +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_check_write) Init(1) Deprecated Deprecated in GCC 9. This switch has no effect. fchkp-store-bounds -C ObjC C++ ObjC++ LTO Report Var(flag_chkp_store_bounds) Init(1) +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_store_bounds) Init(1) Deprecated Deprecated in GCC 9. This switch has no effect. fchkp-instrument-calls -C ObjC C++ ObjC++ LTO Report Var(flag_chkp_instrument_calls) Init(1) +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_instrument_calls) Init(1) Deprecated Deprecated in GCC 9. This switch has no effect. fchkp-instrument-marked-only -C ObjC C++ ObjC++ LTO Report Var(flag_chkp_instrument_marked_only) Init(0) +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_instrument_marked_only) Init(0) Deprecated Deprecated in GCC 9. This switch has no effect. fchkp-use-wrappers -C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_wrappers) Init(1) +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_wrappers) Init(1) Deprecated Deprecated in GCC 9. This switch has no effect. static-libmpx -Driver +Driver Deprecated Deprecated in GCC 9. This switch has no effect. static-libmpxwrappers -Driver +Driver Deprecated Deprecated in GCC 9. This switch has no effect. fcilkplus Undocumented diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt index 01a0385dfa4..a34d4acf1a2 100644 --- a/gcc/config/i386/i386.opt +++ b/gcc/config/i386/i386.opt @@ -951,7 +951,7 @@ Target Report Mask(ISA_RTM) Var(ix86_isa_flags) Save Support RTM built-in functions and code generation. mmpx -Target Report +Target Report Deprecated Deprecated in GCC 9. This switch has no effect. mmwaitx diff --git a/gcc/doc/options.texi b/gcc/doc/options.texi index 69743125c22..80f1bd38bc6 100644 --- a/gcc/doc/options.texi +++ b/gcc/doc/options.texi @@ -280,6 +280,10 @@ The state of this option should be stored in variable @var{var} (actually a macro for @code{global_options.x_@var{var}}). The way that the state is stored depends on the type of option: +@item Deprecated +The option is deprecated and every usage of such option will +result in a warning. + @itemize @bullet @item If the option uses the @code{Mask} or @code{InverseMask} properties, diff --git a/gcc/opt-functions.awk b/gcc/opt-functions.awk index 819a9629ab9..2c371e5a23a 100644 --- a/gcc/opt-functions.awk +++ b/gcc/opt-functions.awk @@ -136,7 +136,8 @@ function switch_bit_fields (flags) flag_init("UInteger", flags) \ flag_init("Host_Wide_Int", hwi) \ flag_init("ToLower", flags) \ - flag_init("Report", flags) + flag_init("Report", flags) \ + flag_init("Deprecated", flags) sub(", $", "", result) return result diff --git a/gcc/opts-common.c b/gcc/opts-common.c index c6b94188b40..004da73e614 100644 --- a/gcc/opts-common.c +++ b/gcc/opts-common.c @@ -667,6 +667,10 @@ decode_cmdline_option (const char **argv, unsigned int lang_mask, if (!option_ok_for_language (option, lang_mask)) errors |= CL_ERR_WRONG_LANG; + /* Mark all deprecated options. */ + if (option->cl_deprecated) + errors |= CL_ERR_DEPRECATED; + /* Convert the argument to lowercase if appropriate. */ if (arg && option->cl_tolower) { @@ -1250,6 +1254,12 @@ read_cmdline_option (struct gcc_options *opts, return; } + if (decoded->errors & CL_ERR_DEPRECATED) + { + warning_at (loc, 0, "deprecated command line option %qs", opt); + return; + } + gcc_assert (!decoded->errors); if (!handle_option (opts, opts_set, decoded, lang_mask, DK_UNSPECIFIED, diff --git a/gcc/opts.h b/gcc/opts.h index 484fc1c39d9..3c4065eae92 100644 --- a/gcc/opts.h +++ b/gcc/opts.h @@ -100,6 +100,8 @@ struct cl_option BOOL_BITFIELD cl_tolower : 1; /* Report argument with -fverbose-asm */ BOOL_BITFIELD cl_report : 1; + /* Deprecated option */ + BOOL_BITFIELD cl_deprecated: 1; /* Offset of field for this option in struct gcc_options, or (unsigned short) -1 if none. */ unsigned short flag_var_offset; @@ -209,6 +211,7 @@ extern const unsigned int cl_enums_count; #define CL_ERR_NEGATIVE (1 << 6) /* Negative form of option not permitted (together with OPT_SPECIAL_unknown). */ +#define CL_ERR_DEPRECATED (1 << 7) /* Deprecated option. */ /* Structure describing the result of decoding an option. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d5ce43d1483..1155851416e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-06-12 Martin Liska + + * g++.dg/opt/mpx.C: New test. + * gcc.target/i386/mpx.c: New test. + 2018-06-12 Claudiu Zissulescu * gcc.target/arc/builtin_simdarc.c: Update test. diff --git a/gcc/testsuite/g++.dg/opt/mpx.C b/gcc/testsuite/g++.dg/opt/mpx.C new file mode 100644 index 00000000000..6ae0cef8790 --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/mpx.C @@ -0,0 +1,5 @@ +// { dg-do compile } +// { dg-options "-fcheck-pointer-bounds -fchkp-first-field-has-own-bounds" } + +// { dg-warning "deprecated command line option .-fcheck-pointer-bounds." "" { target *-*-* } 0 } +// { dg-warning "deprecated command line option .-fchkp-first-field-has-own-bounds." "" { target *-*-* } 0 } diff --git a/gcc/testsuite/gcc.target/i386/mpx.c b/gcc/testsuite/gcc.target/i386/mpx.c new file mode 100644 index 00000000000..f152ae94ecb --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/mpx.c @@ -0,0 +1,3 @@ +/* { dg-do compile } */ +// { dg-options "-mmpx" } +// { dg-warning "deprecated command line option .-mmpx." "" { target *-*-* } 0 } -- 2.30.2