On Thu, Apr 20, 2017 at 05:22:00PM +0200, Jakub Jelinek wrote:
> On Thu, Apr 20, 2017 at 04:09:20PM +0100, Jonathan Wakely wrote:
> > --- a/gcc/cp/init.c
> > +++ b/gcc/cp/init.c
> > @@ -3128,11 +3128,14 @@ build_new_1 (vec<tree, va_gc> **placement, tree 
> > type, tree nelts,
> >      {
> >        warning (OPT_Waligned_new_, "%<new%> of type %qT with extended "
> >            "alignment %d", elt_type, TYPE_ALIGN_UNIT (elt_type));
> > -      inform (input_location, "uses %qD, which does not have an alignment "
> > -         "parameter", alloc_fn);
> > -      if (!aligned_new_threshold)
> > -   inform (input_location, "use %<-faligned-new%> to enable C++17 "
> > -                           "over-aligned new support");
> > +      if (diagnostic_report_warnings_p (global_dc, input_location))
> > +   {
> > +     inform (input_location, "uses %qD, which does not have an alignment "
> > +             "parameter", alloc_fn);
> > +     if (!aligned_new_threshold)
> > +       inform (input_location, "use %<-faligned-new%> to enable C++17 "
> > +                               "over-aligned new support");
> > +   }
> 
> This looks weird.  I'd expect instead:
>       if (warning (OPT_Waligned_new_, "%<new%> of type %qT with extended "
>                  "alignment %d", elt_type, TYPE_ALIGN_UNIT (elt_type)))
>       {
>         inform (input_location, "uses %qD, which does not have an alignment "
>                 "parameter", alloc_fn);
>         if (!aligned_new_threshold)
>           inform (input_location, "use %<-faligned-new%> to enable C++17 "
>                                   "over-aligned new support");
>       }
> That is a standard idiom used if some inform or later warning/error depends
> on whether earlier warning/error has been diagnosed.
 
Yes.

> If that works, this is ok for trunk and 7.1 (we don't have a rc1 yet, it is
> ok now).

One more thing, the test passes even without the patch.  Did you mean to add
// { dg-options "-Wall -w" }
?

        Marek

Reply via email to