On Fri, Aug 29, 2014 at 07:16:55PM +0200, Manuel López-Ibáñez wrote:
> On 19 August 2014 00:06, Joseph S. Myers <[email protected]> wrote:
> > On Tue, 12 Aug 2014, Marek Polacek wrote:
> >
> >> This then is the version with both issues fixed (and new test).
> >>
> >> Bootstrapped/regtested on x86_64-linux, ok for trunk?
> >>
> >> 2014-08-12 Marek Polacek <[email protected]>
> >>
> >> gcc/c-family/
> >> * c-opts.c (sanitize_cpp_opts): Make warn_long_long be set according
> >> to warn_c90_c99_compat.
> >> * c.opt (Wc90-c99-compat, Wdeclaration-after-statement): Initialize
> >> to -1.
Sorry for the delay.
> To be honest, I consider this a small step back towards encoding all
> the options dependencies in the *.opt files.
>
> If I understand correctly, the reason for initializing
> Wdeclaration-after-statement to -1 is to detect whether the option has
> been enabled/disabled explicitly and, if not, then only emit the
> warning if Wpedantic or Wc90-c99-compat has been given, This is
> precisely what LangEnabledBy was designed for. The problem in this
> case is that we only want to enable Wdeclaration-after-statement when
> given Wpedantic if !flag_isoc99 and currently there is not way to
> encode this with LangEnabledBy.
Yeah, this is my understanding.
> Perhaps we need a LangEnabledByIf(C ObjC,Wpedantic,!flag_isoc99). I
> see two difficulties for implementing this:
>
> * We would need to handle warning options after -std=.
> * We would need to have access to flag_isoc99 in the generated file
> options.c. I think this flag is not encoded in global_opts, thus we
> could pass it as an argument to C_handle_option_auto.
>
> Is this the direction we want to move towards? Perhaps it is not worth
> the trouble just for the handful of options that would require such
> LangEnabledByIf().
I'd say it's not worth it. As you say, we only have a few of those
and I'm not sure the gain would offset the cost.
Marek