On 07/24/2018 01:48 PM, Franz Sirl wrote:
Am 2018-07-24 um 17:35 schrieb Martin Sebor:
On 07/24/2018 03:24 AM, Franz Sirl wrote:
Am 2018-07-20 um 23:22 schrieb Martin Sebor:
As the last observation in PR 82063 Jim points out that
Both -Warray-bounds and -Warray-bounds= are listed in the c.opt
file as being enabled by -Wall, but they are the same option,
and it causes this one option to be processed twice in the
C_handle_option_auto function in the generated options.c file.
It gets set to the same value twice, so it does work as intended,
but this is wasteful.
I have removed the redundant -Wall from the first option and
committed the change as obvious in r262912.
Hi Martin,
this looks related to PR 68845 and my patch in there. I never posted it
to gcc-patches because I couldn't find a definitive answer on how
options duplicated between common.opt and c-family/c.opt are supposed to
be handled.
For example, Warray-bounds in common.opt is a separate option (not an
alias to Warray-bounds=), leading to separate enums for them. Is this
intended? Warray-bounds seemed to be the only option with an equal sign
doing it like that at that time. Now Wcast-align is doing the same...
Can you shed some light on this?
-Warray-bounds= (the form that takes an argument) was added in
r219577. Before then, only the plain form existed. If I had
to guess, the interplay between the two options (as opposed to
making the latter an alias for the new option) wasn't considered.
I didn't think of it until now either. Your patch seems like
the right solution to me. Let me know if you will submit it.
If not, I posted the patch below that touches this area and
that will likely need updating so I can roll your change into
it:
https://gcc.gnu.org/ml/gcc-patches/2018-07/msg01286.html
I'll post a patch tomorrow, since I already have all the changes
available and tested here.
Note that one minor change with this patch is that with
-fdiagnostics-show-option the message will show -Warray-bounds= (equal
sign added) instead of -Warray-bounds.
That should be fine.
Martin