On Sat, Nov 8, 2025 at 9:53 PM Sandra Loosemore <[email protected]> wrote:
>
> 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.

OK.

Thanks,
Richard.

> 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