enable handling of -gno- command-line options as negated prefixes
commita1408eb31aeca818120b93c8b1740d758bce4741
authoraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 21 Sep 2017 02:18:02 +0000 (21 02:18 +0000)
committeraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 21 Sep 2017 02:18:02 +0000 (21 02:18 +0000)
treefa8b7dc93538e14e6db4ef2d2018a93b37b51dca
parent6875475fee361759e15b225088e18419edfd7d33
enable handling of -gno- command-line options as negated prefixes

This patch that adds -g to the set of negatable prefixes along with -f,
-m and -W.  Besides the mapping from -gno- to negated -g in option_map
and adding g to the [fmW] matches for negatable options, I had to
introduce gno- as an remapping prefix, for the option searching
machinery to backtrack to and recognize as a remapping prefix, instead
of backtracking to -g and stopping at it as if no-* was its Joined
argument.  Adding such remapping prefixes to preempt further
backtracking can be accomplished by introducing the prefix as an
Undocumented option with a Joined argument and without Driver, Target,
Common, or any language-specific option.  Whenever we match such a fake
options prefix, we abandon further backtracking (it matches, after all),
but find_opt returns the same code it would if it hadn't found any
match, so that we resort to option mapping.

I've arranged for such remapping prefixes to not be considered when
looking for and suggesting a correct spelling for misspelled options.
While testing that, I found a few -W-started options that were not
marked as RejectNegative but should (-Wno-a, is not something we'd like
to suggest ;-)  I've also marked as such -g-started options that
it makes no sense to negate, and removed the explicit -gno- ones,
allowing their opposites to be negated.

for  gcc/ChangeLog

* common.opt (Wa, Wl, Wp, g, gz=): Add
RejectNegative.
(gno-column-info): Remove.
(gcolumn-info): Drop RejectNegative.
(gno-): New prefix.
(gno-record-gcc-switches): Remove.
(grecord-gcc-switches): Drop RejectNegative.
(gno-split-dwarf): Remove.
(gsplit-dwarf): Drop RejectNegative.
(gno-strict-dwarf): Remove.
(gstrict-dwarf): Drop RejectNegative.
* config/darwin.opt (gfull, gused): Add RejectNegative.
* dwarf2out.c (gen_producer_string): Drop
gno-record-gcc-switches handler.
* optc-gen.awk: Add g to prefixes with negative forms.
* opts-common.c (remapping_prefix_p): New.
(find_opt): Check it.
(generate_canonical_option): Test g prefix.
(option_map): Add -gno- mapping.
(add_misspelling_candidates): Check remapping_prefix_p.

for  gcc/ada/ChangeLog

* gcc-interface/lang.opt (gant, gnatO, gnat): Add
        RejectNegative.

for  gcc/c-family/ChangeLog

* c.opt (gen-decls): Add RejectNegative.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@253047 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/ada/ChangeLog
gcc/ada/gcc-interface/lang.opt
gcc/c-family/ChangeLog
gcc/c-family/c.opt
gcc/common.opt
gcc/config/darwin.opt
gcc/dwarf2out.c
gcc/optc-gen.awk
gcc/opts-common.c