On 20/04/17 17:22 +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.
Aha, thanks.
If that works, this is ok for trunk and 7.1 (we don't have a rc1 yet, it is ok now).
OK, I'll test it now.
