From 0b1473e517373386e674c6736de5007960138d03 Mon Sep 17 00:00:00 2001
From: marxin <mliska@suse.cz>
Date: Fri, 8 Jun 2018 10:52:23 +0200
Subject: [PATCH] Come up with Deprecated option flag.
gcc/ChangeLog:
2018-06-08 Martin Liska <mliska@suse.cz>
* 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.
gcc/c-family/ChangeLog:
2018-06-08 Martin Liska <mliska@suse.cz>
* c.opt: Make MPX-related options as Deprecated.
gcc/testsuite/ChangeLog:
2018-06-08 Martin Liska <mliska@suse.cz>
* g++.dg/opt/mpx.C: New test.
* gcc.target/i386/mpx.c: New test.
---
gcc/c-family/c.opt | 42 ++++++++++++++---------------
gcc/config/i386/i386.opt | 2 +-
gcc/opt-functions.awk | 3 ++-
gcc/opts-common.c | 10 +++++++
gcc/opts.h | 3 +++
gcc/testsuite/g++.dg/opt/mpx.C | 5 ++++
gcc/testsuite/gcc.target/i386/mpx.c | 3 +++
7 files changed, 45 insertions(+), 23 deletions(-)
create mode 100644 gcc/testsuite/g++.dg/opt/mpx.C
create mode 100644 gcc/testsuite/gcc.target/i386/mpx.c
@@ -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
@@ -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
@@ -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
@@ -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,
@@ -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. */
new file mode 100644
@@ -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 }
new file mode 100644
@@ -0,0 +1,3 @@
+/* { dg-do compile } */
+// { dg-options "-mmpx" }
+// { dg-warning "deprecated command line option .-mmpx." "" { target *-*-* } 0 }
--
2.17.0