From 296c53ac8ad2a1ec7483d81f8ed9e2eee520f841 Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Wed, 9 Aug 2017 11:28:22 +0000 Subject: re PR c/81233 (--Wdiscarded-qualifiers and Wincompatible-pointer-types missing important detail) PR c/81233 * c-typeck.c (pedwarn_init): Make the function take a variable list. Call emit_diagnostic_valist instead of pedwarn. (convert_for_assignment): Unroll the PEDWARN_FOR_ASSIGNMENT macro. Print the relevant types in diagnostics. * diagnostic-core.h (emit_diagnostic_valist): Add declaration. * diagnostic.c (emit_diagnostic): Add a comment. (emit_diagnostic_valist): New function. * gcc.dg/diagnostic-types-1.c: New test. * gcc.dg/assign-warn-1.c: Update warning messages. * gcc.dg/assign-warn-2.c: Likewise. * gcc.dg/c90-const-expr-5.c: Likewise. * gcc.dg/c99-const-expr-5.c: Likewise. * gcc.dg/conv-2.c: Likewise. * gcc.dg/init-bad-7.c: Likewise. * gcc.dg/overflow-warn-1.c: Likewise. * gcc.dg/overflow-warn-2.c: Likewise. * gcc.dg/overflow-warn-3.c: Likewise. * gcc.dg/overflow-warn-4.c: Likewise. * gcc.dg/pointer-array-atomic.c: Likewise. * gcc.dg/pr26865.c: Likewise. * gcc.dg/pr61162-2.c: Likewise. * gcc.dg/pr61162.c: Likewise. * gcc.dg/pr67730-2.c: Likewise. * gcc.dg/pr69156.c: Likewise. * gcc.dg/pr70174.c: Likewise. * objc.dg/proto-lossage-4.m: Likewise. From-SVN: r250985 --- gcc/diagnostic.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'gcc/diagnostic.c') diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c index bbf5f5c..a98bf4a 100644 --- a/gcc/diagnostic.c +++ b/gcc/diagnostic.c @@ -1128,6 +1128,8 @@ diagnostic_n_impl (location_t location, int opt, int n, singular_gmsgid, plural_gmsgid, ap, kind); } +/* Wrapper around diagnostic_impl taking a variable argument list. */ + bool emit_diagnostic (diagnostic_t kind, location_t location, int opt, const char *gmsgid, ...) @@ -1140,6 +1142,16 @@ emit_diagnostic (diagnostic_t kind, location_t location, int opt, return ret; } +/* Wrapper around diagnostic_impl taking a va_list parameter. */ + +bool +emit_diagnostic_valist (diagnostic_t kind, location_t location, int opt, + const char *gmsgid, va_list *ap) +{ + rich_location richloc (line_table, location); + return diagnostic_impl (&richloc, opt, gmsgid, ap, kind); +} + /* An informative note at LOCATION. Use this for additional details on an error message. */ void -- cgit v1.1