This patch adds the "RejectNegative" property to several options where
it doesn't make sense.  These are either options of the form
"name=value" rather than an on/off switch, those that are already in a
"no-" form, or options that form a mutually-exclusive set.

Also, the fhelp, ftarget-help, and fversion options that do not take
arguments ignore the "-no" prefix so that even "-fno-help" (etc)
causes help to be printed instead of suppressing help output.  Since that
behavior is not useful, I've added RejectNegative to those options as well.

gcc/analyzer/ChangeLog
        PR other/122243
        * analyzer.opt (fanalyzer-verbosity=): Add RejectNegative.

gcc/c-family/ChangeLog
        PR other/122243
        * c.opt: (fdeps-format=): Add RejectNegative.
        (fdeps-file=): Likewise.
        (fdeps-target=): Likewise.
        (Walloc-size-larger-than=): Likewise.
        (Wno-alloc-size-larger-than): Likewise.
        (Walloca-larger-than=): Likewise.
        (Wno-alloca-larger-than): Likewise.
        (Woverloaded-virtual=): Likewise.
        (Wvla-larger-than=): Likewise.
        (Wno-vla-larger-than): Likewise.
        (fopenacc-dim=): Likewise.
        (femit-struct-debug-baseonly): Likewise.
        (femit-struct-debug-reduced): Likewise.
        (femit-struct-debug-detailed=): Likewise.

gcc/ChangeLog
        PR other/122243
        * common.opt (fhelp): Add RejectNegative.
        (fhelp=): Likewise.
        (ftarget-help): Likewise.
        (fversion): Likewise.
        (Wno-frame-larger-than): Likewise.
        (Wno-larger-than): Likewise.
        (Wno-stack-usage): Likewise.
        (fdiagnostics-minimum-margin-width=): Likewise.
        (flto-incremental=): Likewise.
        (foffload=): Likewise.
        (foffload-options=): Likewise.
        (foffload-abi-host-opts=): Likewise.
        (fpatchable-function-entry=): Likewise.
        (gno-pubnames): Likewise.
        (gpubnames): Likewise.
        (ggnu-pubnames): Likewise.
---
 gcc/analyzer/analyzer.opt |  2 +-
 gcc/c-family/c.opt        | 28 ++++++++++++++--------------
 gcc/common.opt            | 32 ++++++++++++++++----------------
 3 files changed, 31 insertions(+), 31 deletions(-)

diff --git a/gcc/analyzer/analyzer.opt b/gcc/analyzer/analyzer.opt
index 2ca905854bd..611b987daec 100644
--- a/gcc/analyzer/analyzer.opt
+++ b/gcc/analyzer/analyzer.opt
@@ -335,7 +335,7 @@ Common Var(flag_analyzer_verbose_state_changes) Init(0)
 Emit more verbose descriptions of state changes in diagnostics.
 
 fanalyzer-verbosity=
-Common Joined UInteger Var(analyzer_verbosity) Init(2)
+Common RejectNegative Joined UInteger Var(analyzer_verbosity) Init(2)
 Control which events are displayed in diagnostic paths.
 
 fdump-analyzer
diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
index 66099c7f397..b8bdc2be6d5 100644
--- a/gcc/c-family/c.opt
+++ b/gcc/c-family/c.opt
@@ -267,15 +267,15 @@ C ObjC C++ ObjC++ Joined Separate MissingArgError(missing 
makefile target after
 -MT <target>   Add a target that does not require quoting.
 
 fdeps-format=
-C ObjC C++ ObjC++ NoDriverArg Joined MissingArgError(missing format after %qs)
+C ObjC C++ ObjC++ RejectNegative Joined MissingArgError(missing format after 
%qs)
 Structured format for output dependency information.  Supported (\"p1689r5\").
 
 fdeps-file=
-C ObjC C++ ObjC++ NoDriverArg Joined MissingArgError(missing output path after 
%qs)
+C ObjC C++ ObjC++ RejectNegative Joined MissingArgError(missing output path 
after %qs)
 File for output dependency information.
 
 fdeps-target=
-C ObjC C++ ObjC++ NoDriverArg Joined MissingArgError(missing path after %qs)
+C ObjC C++ ObjC++ RejectNegative Joined MissingArgError(missing path after %qs)
 -fdeps-target=obj.o Output file for the compile step.
 
 P
@@ -351,12 +351,12 @@ C ObjC C++ ObjC++ Var(warn_alloc_size) Warning 
LangEnabledBy(C ObjC C++ ObjC++,
 Warn when allocating insufficient storage for the target type of the assigned 
pointer.
 
 Walloc-size-larger-than=
-C ObjC C++ LTO ObjC++ Var(warn_alloc_size_limit) Joined Host_Wide_Int ByteSize 
Warning Init(HOST_WIDE_INT_MAX)
+C ObjC C++ LTO ObjC++ Var(warn_alloc_size_limit) Joined RejectNegative 
Host_Wide_Int ByteSize Warning Init(HOST_WIDE_INT_MAX)
 -Walloc-size-larger-than=<bytes>       Warn for calls to allocation functions 
that
 attempt to allocate objects larger than the specified number of bytes.
 
 Wno-alloc-size-larger-than
-C ObjC C++ LTO ObjC++ 
Alias(Walloc-size-larger-than=,18446744073709551615EiB,none) Warning
+C ObjC C++ LTO ObjC++ RejectNegative 
Alias(Walloc-size-larger-than=,18446744073709551615EiB,none) Warning
 Disable Walloc-size-larger-than= warning.  Equivalent to 
Walloc-size-larger-than=<SIZE_MAX> or larger.
 
 Walloc-zero
@@ -364,13 +364,13 @@ C ObjC C++ ObjC++ Var(warn_alloc_zero) Warning
 Warn for calls to allocation functions that specify zero bytes.
 
 Walloca-larger-than=
-C ObjC C++ LTO ObjC++ Var(warn_alloca_limit) Warning Joined Host_Wide_Int 
ByteSize Init(HOST_WIDE_INT_MAX)
+C ObjC C++ LTO ObjC++ Var(warn_alloca_limit) Warning Joined RejectNegative 
Host_Wide_Int ByteSize Init(HOST_WIDE_INT_MAX)
 -Walloca-larger-than=<number>  Warn on unbounded uses of
 alloca, and on bounded uses of alloca whose bound can be larger than
 <number> bytes.
 
 Wno-alloca-larger-than
-C ObjC C++ LTO ObjC++ Alias(Walloca-larger-than=,18446744073709551615EiB,none) 
Warning
+C ObjC C++ LTO ObjC++ RejectNegative 
Alias(Walloca-larger-than=,18446744073709551615EiB,none) Warning
 Disable Walloca-larger-than= warning.  Equivalent to 
Walloca-larger-than=<SIZE_MAX> or larger.
 
 Warith-conversion
@@ -1211,7 +1211,7 @@ C++ ObjC++ Warning Alias(Woverloaded-virtual=,2,0)
 Warn about overloaded virtual function names.
 
 Woverloaded-virtual=
-C++ ObjC++ Joined UInteger IntegerRange(0,2) Var(warn_overloaded_virtual) 
Warning LangEnabledBy(C++ ObjC++,Wall,1,0)
+C++ ObjC++ Joined RejectNegative UInteger IntegerRange(0,2) 
Var(warn_overloaded_virtual) Warning LangEnabledBy(C++ ObjC++,Wall,1,0)
 Warn about overloaded virtual function names.
 
 Woverride-init
@@ -1651,13 +1651,13 @@ C ObjC C++ ObjC++ Var(warn_vla) Init(-1) Warning
 Warn if a variable length array is used.
 
 Wvla-larger-than=
-C ObjC C++ LTO ObjC++ Var(warn_vla_limit) Warning Joined Host_Wide_Int 
ByteSize Init(HOST_WIDE_INT_MAX)
+C ObjC C++ LTO ObjC++ Var(warn_vla_limit) Warning Joined RejectNegative 
Host_Wide_Int ByteSize Init(HOST_WIDE_INT_MAX)
 -Wvla-larger-than=<number>     Warn on unbounded uses of variable-length
 arrays, and on bounded uses of variable-length arrays whose bound can be
 larger than <number> bytes.
 
 Wno-vla-larger-than
-C ObjC C++ LTO ObjC++ Alias(Wvla-larger-than=,18446744073709551615EiB,none) 
Warning
+C ObjC C++ LTO ObjC++ RejectNegative 
Alias(Wvla-larger-than=,18446744073709551615EiB,none) Warning
 Disable Wvla-larger-than= warning.  Equivalent to Wvla-larger-than=<SIZE_MAX> 
or larger.
 
 Wvla-parameter
@@ -2263,7 +2263,7 @@ C ObjC C++ ObjC++ LTO Var(flag_openacc)
 Enable OpenACC.
 
 fopenacc-dim=
-C ObjC C++ ObjC++ LTO Joined Var(flag_openacc_dims)
+C ObjC C++ ObjC++ LTO Joined RejectNegative Var(flag_openacc_dims)
 Specify default OpenACC compute dimensions.
 
 fopenmp
@@ -2494,15 +2494,15 @@ ObjC ObjC++ Driver Var(flag_gen_declaration) 
RejectNegative
 Dump declarations to a .decl file.
 
 femit-struct-debug-baseonly
-C ObjC C++ ObjC++
+C ObjC C++ ObjC++  RejectNegative
 -femit-struct-debug-baseonly   Aggressive reduced debug info for structs.
 
 femit-struct-debug-reduced
-C ObjC C++ ObjC++
+C ObjC C++ ObjC++ RejectNegative
 -femit-struct-debug-reduced    Conservative reduced debug info for structs.
 
 femit-struct-debug-detailed=
-C ObjC C++ ObjC++ Joined
+C ObjC C++ ObjC++ Joined RejectNegative
 -femit-struct-debug-detailed=<spec-list>       Detailed reduced debug info for 
structs.
 
 fext-numeric-literals
diff --git a/gcc/common.opt b/gcc/common.opt
index 2ccfb44eac0..2c8c0e44750 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -426,16 +426,16 @@ Driver Alias(v)
 ;; as -fhelp; the following four entries are for compatibility with
 ;; any direct uses of those (undocumented) -f forms
 fhelp
-Common Driver Alias(-help)
+Common Driver RejectNegative Alias(-help)
 
 fhelp=
-Common Driver Joined Alias(-help=)
+Common Driver RejectNegative Joined Alias(-help=)
 
 ftarget-help
-Common Driver Alias(-target-help)
+Common Driver RejectNegative Alias(-target-help)
 
 fversion
-Common Driver Alias(-version)
+Common Driver RejectNegative Alias(-version)
 
 -sysroot
 Driver Separate Alias(-sysroot=)
@@ -628,7 +628,7 @@ Common RejectNegative Joined Host_Wide_Int ByteSize Warning 
Var(warn_frame_large
 -Wframe-larger-than=<byte-size>        Warn if a function's stack frame 
requires in excess of <byte-size>.
 
 Wno-frame-larger-than
-Common Alias(Wframe-larger-than=,18446744073709551615EiB,none) Warning
+Common RejectNegative Alias(Wframe-larger-than=,18446744073709551615EiB,none) 
Warning
 Disable -Wframe-larger-than= warning.  Equivalent to 
-Wframe-larger-than=<SIZE_MAX> or larger.
 
 Wfree-nonheap-object
@@ -670,7 +670,7 @@ Common RejectNegative Joined Host_Wide_Int ByteSize Warning 
Var(warn_larger_than
 -Wlarger-than=<byte-size>      Warn if an object's size exceeds <byte-size>.
 
 Wno-larger-than
-Common Alias(Wlarger-than=,18446744073709551615EiB,none) Warning
+Common RejectNegative Alias(Wlarger-than=,18446744073709551615EiB,none) Warning
 Disable -Wlarger-than= warning.  Equivalent to -Wlarger-than=<SIZE_MAX> or 
larger.
 
 Wnonnull-compare
@@ -755,7 +755,7 @@ Common Joined RejectNegative Host_Wide_Int ByteSize 
Var(warn_stack_usage) Warnin
 -Wstack-usage=<byte-size>      Warn if stack usage might exceed <byte-size>.
 
 Wno-stack-usage
-Common Alias(Wstack-usage=,18446744073709551615EiB,none) Warning
+Common RejectNegative Alias(Wstack-usage=,18446744073709551615EiB,none) Warning
 Disable Wstack-usage= warning.  Equivalent to Wstack-usage=<SIZE_MAX> or 
larger.
 
 Wstrict-aliasing
@@ -1618,7 +1618,7 @@ EnumValue
 Enum(diagnostic_text_art_charset) String(emoji) 
Value(DIAGNOSTICS_TEXT_ART_CHARSET_EMOJI)
 
 fdiagnostics-minimum-margin-width=
-Common Joined UInteger Var(diagnostics_minimum_margin_width) Init(6)
+Common Joined RejectNegative UInteger Var(diagnostics_minimum_margin_width) 
Init(6)
 Set minimum width of left margin of source code when showing source.
 
 fdiagnostics-show-nesting
@@ -2311,7 +2311,7 @@ Common RejectNegative Joined Var(flag_lto)
 Link-time optimization with number of parallel jobs or jobserver.
 
 flto-incremental=
-Common Joined Var(flag_lto_incremental)
+Common Joined RejectNegative Var(flag_lto_incremental)
 Enable incremental LTO, with its cache in given directory.
 
 flto-incremental-cache-size=
@@ -2443,10 +2443,10 @@ Common Var(flag_non_call_exceptions) Optimization
 Support synchronous non-call exceptions.
 
 foffload=
-Driver Joined MissingArgError(targets missing after %qs)
+Driver Joined RejectNegative MissingArgError(targets missing after %qs)
 
 foffload-options=
-Common Driver Joined MissingArgError(options or targets=options missing after 
%qs)
+Common Driver Joined RejectNegative MissingArgError(options or targets=options 
missing after %qs)
 -foffload-options=<targets>=<options>  Specify options for the offloading 
targets.
 
 foffload-abi=
@@ -2463,7 +2463,7 @@ EnumValue
 Enum(offload_abi) String(lp64) Value(OFFLOAD_ABI_LP64)
 
 foffload-abi-host-opts=
-Common Joined MissingArgError(option missing after %qs)
+Common Joined RejectNegative MissingArgError(option missing after %qs)
 -foffload-abi-host-opts=<options>      Specify host ABI options.
 
 fomit-frame-pointer
@@ -2716,7 +2716,7 @@ Common Var(flag_profile_reorder_functions) Optimization
 Enable function reordering that improves code placement.
 
 fpatchable-function-entry=
-Common Var(flag_patchable_function_entry) Joined Optimization
+Common Var(flag_patchable_function_entry) Joined RejectNegative Optimization
 Insert NOP instructions at each function entry.
 
 frandom-seed
@@ -3723,15 +3723,15 @@ RejectNegative Joined Undocumented
 ; Catch the gno- prefix, so it doesn't backtrack to g<level>.
 
 gno-pubnames
-Common Driver Negative(gpubnames) Var(debug_generate_pub_sections, 0) Init(-1)
+Common Driver RejectNegative Negative(gpubnames) 
Var(debug_generate_pub_sections, 0) Init(-1)
 Don't generate DWARF pubnames and pubtypes sections.
 
 gpubnames
-Common Driver Negative(ggnu-pubnames) Var(debug_generate_pub_sections, 1)
+Common Driver RejectNegative Negative(ggnu-pubnames) 
Var(debug_generate_pub_sections, 1)
 Generate DWARF pubnames and pubtypes sections.
 
 ggnu-pubnames
-Common Driver Negative(gno-pubnames) Var(debug_generate_pub_sections, 2)
+Common Driver RejectNegative Negative(gno-pubnames) 
Var(debug_generate_pub_sections, 2)
 Generate DWARF pubnames and pubtypes sections with GNU extensions.
 
 grecord-gcc-switches
-- 
2.39.5

Reply via email to