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