gcc/testsuite/ChangeLog:

	* c-c++-common/Wbool-operation-1.c: Adjust text of expected diagnostics.
	* c-c++-common/Wvarargs-2.c: Same.
	* c-c++-common/Wvarargs.c: Same.
	* c-c++-common/pr51768.c: Same.
	* c-c++-common/tm/inline-asm.c: Same.
	* c-c++-common/tm/safe-1.c: Same.
	* g++.dg/asm-qual-1.C: Same.
	* g++.dg/asm-qual-3.C: Same.
	* g++.dg/conversion/dynamic1.C: Same.
	* g++.dg/cpp0x/constexpr-89599.C: Same.
	* g++.dg/cpp0x/constexpr-cast.C: Same.
	* g++.dg/cpp0x/constexpr-shift1.C: Same.
	* g++.dg/cpp0x/lambda/lambda-conv11.C: Same.
	* g++.dg/cpp0x/nullptr04.C: Same.
	* g++.dg/cpp0x/static_assert12.C: Same.
	* g++.dg/cpp0x/static_assert8.C: Same.
	* g++.dg/cpp1y/lambda-conv1.C: Same.
	* g++.dg/cpp1y/pr79393-3.C: Same.
	* g++.dg/cpp1y/static_assert1.C: Same.
	* g++.dg/cpp1z/constexpr-if4.C: Same.
	* g++.dg/cpp1z/constexpr-if5.C: Same.
	* g++.dg/cpp1z/constexpr-if9.C: Same.
	* g++.dg/eh/goto2.C: Same.
	* g++.dg/eh/goto3.C: Same.
	* g++.dg/expr/static_cast8.C: Same.
	* g++.dg/ext/flexary5.C: Same.
	* g++.dg/ext/utf-array-short-wchar.C: Same.
	* g++.dg/ext/utf-array.C: Same.
	* g++.dg/ext/utf8-2.C: Same.
	* g++.dg/gomp/loop-4.C: Same.
	* g++.dg/gomp/macro-4.C: Same.
	* g++.dg/gomp/udr-1.C: Same.
	* g++.dg/init/initializer-string-too-long.C: Same.
	* g++.dg/other/offsetof9.C: Same.
	* g++.dg/ubsan/pr63956.C: Same.
	* g++.dg/warn/Wbool-operation-1.C: Same.
	* g++.dg/warn/Wtype-limits-Wextra.C: Same.
	* g++.dg/warn/Wtype-limits.C: Same.
	* g++.dg/wrappers/pr88680.C: Same.
	* g++.old-deja/g++.mike/eh55.C: Same.
	* gcc.dg/Wsign-compare-1.c: Same.
	* gcc.dg/Wtype-limits-Wextra.c: Same.
	* gcc.dg/Wtype-limits.c: Same.
	* gcc.dg/Wunknownprag.c: Same.
	* gcc.dg/Wunsuffixed-float-constants-1.c: Same.
	* gcc.dg/asm-6.c: Same.
	* gcc.dg/asm-qual-1.c: Same.
	* gcc.dg/cast-1.c: Same.
	* gcc.dg/cast-2.c: Same.
	* gcc.dg/cast-3.c: Same.
	* gcc.dg/cpp/source_date_epoch-2.c: Same.
	* gcc.dg/debug/pr85252.c: Same.
	* gcc.dg/dfp/cast-bad.c: Same.
	* gcc.dg/format/gcc_diag-1.c: Same.
	* gcc.dg/format/gcc_diag-11.c: Same.New test.
	* gcc.dg/gcc_diag-11.c: Same.New test.
	* gcc.dg/gnu-cond-expr-2.c: Same.
	* gcc.dg/gnu-cond-expr-3.c: Same.
	* gcc.dg/gomp/macro-4.c: Same.
	* gcc.dg/init-bad-1.c: Same.
	* gcc.dg/init-bad-2.c: Same.
	* gcc.dg/init-bad-3.c: Same.
	* gcc.dg/pr27528.c: Same.
	* gcc.dg/pr48552-1.c: Same.
	* gcc.dg/pr48552-2.c: Same.
	* gcc.dg/pr59846.c: Same.
	* gcc.dg/pr61096-1.c: Same.
	* gcc.dg/pr8788-1.c: Same.
	* gcc.dg/pr90082.c: Same.
	* gcc.dg/simd-2.c: Same.
	* gcc.dg/spellcheck-params-2.c: Same.
	* gcc.dg/spellcheck-params.c: Same.
	* gcc.dg/strlenopt-49.c: Same.
	* gcc.dg/tm/pr52141.c: Same.
	* gcc.dg/torture/pr51106-1.c: Same.
	* gcc.dg/torture/pr51106-2.c: Same.
	* gcc.dg/utf-array-short-wchar.c: Same.
	* gcc.dg/utf-array.c: Same.
	* gcc.dg/utf8-2.c: Same.
	* gcc.dg/warn-sprintf-no-nul.c: Same.
	* gcc.target/i386/asm-flag-0.c: Same.
	* gcc.target/i386/inline_error.c: Same.
	* gcc.target/i386/pr30848.c: Same.
	* gcc.target/i386/pr39082-1.c: Same.
	* gcc.target/i386/pr39678.c: Same.
	* gcc.target/i386/pr57756.c: Same.
	* gcc.target/i386/pr68843-1.c: Same.
	* gcc.target/i386/pr79804.c: Same.
	* gcc.target/i386/pr82673.c: Same.
	* obj-c++.dg/class-protocol-1.mm: Same.
	* obj-c++.dg/exceptions-3.mm: Same.
	* obj-c++.dg/exceptions-4.mm: Same.
	* obj-c++.dg/exceptions-5.mm: Same.
	* obj-c++.dg/exceptions-6.mm: Same.
	* obj-c++.dg/method-12.mm: Same.
	* obj-c++.dg/method-13.mm: Same.
	* obj-c++.dg/method-6.mm: Same.
	* obj-c++.dg/method-7.mm: Same.
	* obj-c++.dg/method-9.mm: Same.
	* obj-c++.dg/method-lookup-1.mm: Same.
	* obj-c++.dg/proto-lossage-4.mm: Same.
	* obj-c++.dg/protocol-qualifier-2.mm: Same.
	* objc.dg/call-super-2.m: Same.
	* objc.dg/class-protocol-1.m: Same.
	* objc.dg/desig-init-1.m: Same.
	* objc.dg/exceptions-3.m: Same.
	* objc.dg/exceptions-4.m: Same.
	* objc.dg/exceptions-5.m: Same.
	* objc.dg/exceptions-6.m: Same.
	* objc.dg/method-19.m: Same.
	* objc.dg/method-2.m: Same.
	* objc.dg/method-5.m: Same.
	* objc.dg/method-6.m: Same.
	* objc.dg/method-7.m: Same.
	* objc.dg/method-lookup-1.m: Same.
	* objc.dg/proto-hier-1.m: Same.
	* objc.dg/proto-lossage-4.m: Same.

diff --git a/gcc/testsuite/c-c++-common/Wbool-operation-1.c b/gcc/testsuite/c-c++-common/Wbool-operation-1.c
index 552b044c7bb..04891878155 100644
--- a/gcc/testsuite/c-c++-common/Wbool-operation-1.c
+++ b/gcc/testsuite/c-c++-common/Wbool-operation-1.c
@@ -15,18 +15,18 @@ fn (bool b, bool b2, T b3, int n, v4si v)
 {
   int r = 0;
 
-  r += ~b; /* { dg-warning "on an expression of type bool|on a boolean expression" } */
-  r += n + ~b; /* { dg-warning "on an expression of type bool|on a boolean expression" } */
-  r += ~(n == 1); /* { dg-warning "on an expression of type bool|on a boolean expression" } */
-  r += ~(n || 1); /* { dg-warning "on an expression of type bool|on a boolean expression" } */
-  r += ~b == 1; /* { dg-warning "on an expression of type bool|on a boolean expression" } */
-  r += ~(++n, n == 1); /* { dg-warning "on an expression of type bool|on a boolean expression" } */
-  r += ~(++n, n > 1); /* { dg-warning "on an expression of type bool|on a boolean expression" } */
-  r += ~(++n, n && 1); /* { dg-warning "on an expression of type bool|on a boolean expression" } */
-  r += (++n, ~b); /* { dg-warning "on an expression of type bool|on a boolean expression" } */
-  r += ~b3; /* { dg-warning "on an expression of type bool|on a boolean expression" } */
-  r += ~foo (); /* { dg-warning "on an expression of type bool|on a boolean expression" } */
-  r += ~(bool) !1; /* { dg-warning "on an expression of type bool|on a boolean expression" } */
+  r += ~b; /* { dg-warning "on an expression of type 'bool'|on a boolean expression" } */
+  r += n + ~b; /* { dg-warning "on an expression of type 'bool'|on a boolean expression" } */
+  r += ~(n == 1); /* { dg-warning "on an expression of type 'bool'|on a boolean expression" } */
+  r += ~(n || 1); /* { dg-warning "on an expression of type 'bool'|on a boolean expression" } */
+  r += ~b == 1; /* { dg-warning "on an expression of type 'bool'|on a boolean expression" } */
+  r += ~(++n, n == 1); /* { dg-warning "on an expression of type 'bool'|on a boolean expression" } */
+  r += ~(++n, n > 1); /* { dg-warning "on an expression of type 'bool'|on a boolean expression" } */
+  r += ~(++n, n && 1); /* { dg-warning "on an expression of type 'bool'|on a boolean expression" } */
+  r += (++n, ~b); /* { dg-warning "on an expression of type 'bool'|on a boolean expression" } */
+  r += ~b3; /* { dg-warning "on an expression of type 'bool'|on a boolean expression" } */
+  r += ~foo (); /* { dg-warning "on an expression of type 'bool'|on a boolean expression" } */
+  r += ~(bool) !1; /* { dg-warning "on an expression of type 'bool'|on a boolean expression" } */
 
   v = ~v;
   r += ~(int) b;
diff --git a/gcc/testsuite/c-c++-common/Wvarargs-2.c b/gcc/testsuite/c-c++-common/Wvarargs-2.c
index a6b51f19e60..08d3b94a087 100644
--- a/gcc/testsuite/c-c++-common/Wvarargs-2.c
+++ b/gcc/testsuite/c-c++-common/Wvarargs-2.c
@@ -9,7 +9,7 @@ void
 err (int a)
 {
   va_list vp;
-  va_start (vp, a); // { dg-error "used in function with fixed args" }
+  va_start (vp, a); // { dg-error "used in function with fixed arguments" }
 }
 
 void
diff --git a/gcc/testsuite/c-c++-common/Wvarargs.c b/gcc/testsuite/c-c++-common/Wvarargs.c
index 71d8c5dff93..bfd8276a292 100644
--- a/gcc/testsuite/c-c++-common/Wvarargs.c
+++ b/gcc/testsuite/c-c++-common/Wvarargs.c
@@ -6,7 +6,7 @@ void
 err (int a)
 {
   va_list vp;
-  va_start (vp, a); // { dg-error "used in function with fixed args" }
+  va_start (vp, a); // { dg-error "used in function with fixed arguments" }
 }
 
 #pragma GCC diagnostic push
diff --git a/gcc/testsuite/c-c++-common/pr51768.c b/gcc/testsuite/c-c++-common/pr51768.c
index 082594ccad7..c30039226b3 100644
--- a/gcc/testsuite/c-c++-common/pr51768.c
+++ b/gcc/testsuite/c-c++-common/pr51768.c
@@ -5,7 +5,7 @@
 void
 foo (void)
 {
-  asm goto ("" : : : : lab, lab, lab2, lab);	/* { dg-error "duplicate asm operand name" } */
+  asm goto ("" : : : : lab, lab, lab2, lab);	/* { dg-error "duplicate 'asm' operand name" } */
 lab:;
 lab2:;
 }
@@ -13,7 +13,7 @@ lab2:;
 void
 bar (void)
 {
-  asm goto ("" : : [lab] "i" (0) : : lab);	/* { dg-error "duplicate asm operand name" } */
+  asm goto ("" : : [lab] "i" (0) : : lab);	/* { dg-error "duplicate 'asm' operand name" } */
 lab:;
 }
 
@@ -21,5 +21,5 @@ void
 baz (void)
 {
   int x;
-  asm ("" : [lab] "=r" (x) : [lab] "r" (x));	/* { dg-error "duplicate asm operand name" } */
+  asm ("" : [lab] "=r" (x) : [lab] "r" (x));	/* { dg-error "duplicate 'asm' operand name" } */
 }
diff --git a/gcc/testsuite/c-c++-common/tm/inline-asm.c b/gcc/testsuite/c-c++-common/tm/inline-asm.c
index eefd347dc8f..73892601897 100644
--- a/gcc/testsuite/c-c++-common/tm/inline-asm.c
+++ b/gcc/testsuite/c-c++-common/tm/inline-asm.c
@@ -4,7 +4,7 @@
 static inline void
 inline_death ()
 {
-  __asm__ ("");			/* { dg-error "asm not allowed" } */
+  __asm__ ("");			/* { dg-error "'asm' not allowed" } */
 }
 
 void
diff --git a/gcc/testsuite/c-c++-common/tm/safe-1.c b/gcc/testsuite/c-c++-common/tm/safe-1.c
index 4a81a78c396..504113e8eff 100644
--- a/gcc/testsuite/c-c++-common/tm/safe-1.c
+++ b/gcc/testsuite/c-c++-common/tm/safe-1.c
@@ -39,8 +39,8 @@ foo(void)
   (*pi)();		/* { dg-error "unsafe indirect function call" } */
   (*pu)();		/* { dg-error "unsafe indirect function call" } */
 
-  asm("");		/* { dg-error "asm not allowed" } */
-  asm("" : "=g"(i));	/* { dg-error "asm not allowed" } */
+  asm("");		/* { dg-error "'asm' not allowed" } */
+  asm("" : "=g"(i));	/* { dg-error "'asm' not allowed" } */
 
   return fc(i);
 }
@@ -62,8 +62,8 @@ bar(void)
   (*pm)();
   (*pu)();		/* { dg-error "unsafe indirect function call" } */
 
-  asm("");		/* { dg-error "asm not allowed" } */
-  asm("" : "=g"(i));	/* { dg-error "asm not allowed" } */
+  asm("");		/* { dg-error "'asm' not allowed" } */
+  asm("" : "=g"(i));	/* { dg-error "'asm' not allowed" } */
 
   return fc(i);
 }
diff --git a/gcc/testsuite/g++.dg/asm-qual-1.C b/gcc/testsuite/g++.dg/asm-qual-1.C
index 3fba592ee99..1bb217fa99b 100644
--- a/gcc/testsuite/g++.dg/asm-qual-1.C
+++ b/gcc/testsuite/g++.dg/asm-qual-1.C
@@ -7,7 +7,7 @@ f ()
 {
   asm volatile ("");
 
-  asm const (""); // { dg-error {'const' is not an asm qualifier} }
+  asm const (""); // { dg-error {'const' is not an 'asm' qualifier} }
 
-  asm __restrict (""); // { dg-error {'__restrict' is not an asm qualifier} }
+  asm __restrict (""); // { dg-error {'__restrict' is not an 'asm' qualifier} }
 }
diff --git a/gcc/testsuite/g++.dg/asm-qual-3.C b/gcc/testsuite/g++.dg/asm-qual-3.C
index 0bf60697ea5..80573cb4358 100644
--- a/gcc/testsuite/g++.dg/asm-qual-3.C
+++ b/gcc/testsuite/g++.dg/asm-qual-3.C
@@ -2,11 +2,11 @@
 // { dg-do compile }
 // { dg-options "-std=gnu++98" }
 
-asm const ("");    // { dg-error {'const' is not an asm qualifier} }
-asm volatile (""); // { dg-warning {asm qualifier 'volatile' ignored outside of function body} }
+asm const ("");    // { dg-error {'const' is not an 'asm' qualifier} }
+asm volatile (""); // { dg-warning {'asm' qualifier 'volatile' ignored outside of function body} }
 asm restrict (""); // { dg-error {expected '\(' before 'restrict'} }
-asm inline ("");   // { dg-error {asm qualifier outside of function body} }
-asm goto ("");     // { dg-error {asm qualifier outside of function body} }
+asm inline ("");   // { dg-error {'asm' qualifier outside of function body} }
+asm goto ("");     // { dg-error {'asm' qualifier outside of function body} }
 
 // There are many other things wrong with this code, so:
 // { dg-excess-errors "" }
diff --git a/gcc/testsuite/g++.dg/conversion/dynamic1.C b/gcc/testsuite/g++.dg/conversion/dynamic1.C
index a781cbaa3fb..3c8739c5422 100644
--- a/gcc/testsuite/g++.dg/conversion/dynamic1.C
+++ b/gcc/testsuite/g++.dg/conversion/dynamic1.C
@@ -11,5 +11,5 @@ A& bar();
 
 void baz()
 {
-  dynamic_cast<A&>( bar().foo );  // { dg-error "cannot dynamic_cast" }
+  dynamic_cast<A&>( bar().foo );  // { dg-error "cannot 'dynamic_cast'" }
 }
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-89599.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-89599.C
index 07760a302a7..010416a77a1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-89599.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-89599.C
@@ -2,5 +2,5 @@
 // { dg-do compile { target c++11 } }
 
 void foo (int x) {}
-constexpr void *arr[2] = { (void*) &foo, (void *) foo };// { dg-error "a reinterpret_cast is not a constant expression" }
-constexpr void *ptr = (void *) &foo;			// { dg-error "a reinterpret_cast is not a constant expression" }
+constexpr void *arr[2] = { (void*) &foo, (void *) foo };// { dg-error "'reinterpret_cast' is not a constant expression" }
+constexpr void *ptr = (void *) &foo;			// { dg-error "'reinterpret_cast' is not a constant expression" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-cast.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-cast.C
index e0c7ed33ac7..da76a3dc7bc 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-cast.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-cast.C
@@ -7,8 +7,8 @@ int i;
 // The following was accepted due to bug 49171.
 constexpr void *q = reinterpret_cast<void*>(&i);    // { dg-error "not a constant expression" }
 
-constexpr void *r0 = reinterpret_cast<void*>(1);    // { dg-error "not a constant expression|reinterpret_cast from integer to pointer" }
-constexpr void *r1 = reinterpret_cast<void*>(sizeof 'x');  // { dg-error ".reinterpret_cast<void\\*>\\(1\[ul\]\*\\). is not a constant expression" }
+constexpr void *r0 = reinterpret_cast<void*>(1);    // { dg-error "not a constant expression|'reinterpret_cast' from integer to pointer" }
+constexpr void *r1 = reinterpret_cast<void*>(sizeof 'x');  // { dg-error "'reinterpret_cast<void\\*>\\(1\[ul\]\*\\)' is not a constant expression" }
 
 template <class T>
 constexpr bool f ()
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-shift1.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-shift1.C
index c1cfb1eebdb..1970122f549 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-shift1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-shift1.C
@@ -11,7 +11,7 @@ constexpr int i1 = fn1 (1, -1); // { dg-message "in .constexpr. expansion of " }
 constexpr int
 fn2 (int i, int j)
 {
-  return i << j; // { dg-error "is >= than the precision of the left operand" }
+  return i << j; // { dg-error "is greater than or equal to the precision .. of the left operand" }
 }
 
 constexpr int i2 = fn2 (1, 200); // { dg-message "in .constexpr. expansion of " }
@@ -43,7 +43,7 @@ constexpr int i5 = fn5 (__INT_MAX__, 1);
 constexpr int
 fn6 (unsigned int i, unsigned int j)
 {
-  return i << j; // { dg-error "is >= than the precision of the left operand" }
+  return i << j; // { dg-error "is greater than or equal to the precision .. of the left operand" }
 }
 
 constexpr int i6 = fn6 (1, -1); // { dg-message "in .constexpr. expansion of " }
@@ -67,7 +67,7 @@ constexpr int i8 = fn8 (-1, 1);
 constexpr int
 fn9 (int i, int j)
 {
-  return i >> j;  // { dg-error "is >= than the precision of the left operand" }
+  return i >> j;  // { dg-error "is greater than or equal to the precision .. of the left operand" }
 }
 
 constexpr int i9 = fn9 (1, 200); // { dg-message "in .constexpr. expansion of " }
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv11.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv11.C
index 4b8d6487f5c..ec08f504fab 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv11.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv11.C
@@ -4,7 +4,7 @@
 void foo()
 {
   int i;
-  static_cast<void(*)()>([i]{});  // { dg-error "invalid static_cast" }
-  static_cast<void(*)()>([=]{});  // { dg-error "invalid static_cast" }
-  static_cast<void(*)()>([&]{});  // { dg-error "invalid static_cast" }
+  static_cast<void(*)()>([i]{});  // { dg-error "invalid 'static_cast'" }
+  static_cast<void(*)()>([=]{});  // { dg-error "invalid 'static_cast'" }
+  static_cast<void(*)()>([&]{});  // { dg-error "invalid 'static_cast'" }
 }
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr04.C b/gcc/testsuite/g++.dg/cpp0x/nullptr04.C
index 372ac51cd7b..2b9017865f7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr04.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr04.C
@@ -4,13 +4,13 @@
 
 __extension__ typedef __INTPTR_TYPE__ intptr_t;
 
-const int n4 = static_cast<const int>(nullptr); // { dg-error "invalid static_cast " }
+const int n4 = static_cast<const int>(nullptr); // { dg-error "invalid 'static_cast' " }
 const short int n5 = reinterpret_cast<short int>(nullptr); // { dg-error "loses precision" }
 const intptr_t n6 = reinterpret_cast<intptr_t>(nullptr);
 const intptr_t n7 = (intptr_t)nullptr;
 
 decltype(nullptr) mynull = 0;
-const int n8 = static_cast<const int>(mynull); // { dg-error "invalid static_cast " }
+const int n8 = static_cast<const int>(mynull); // { dg-error "invalid 'static_cast' " }
 const short int n9 = reinterpret_cast<short int>(mynull); // { dg-error "loses precision" }
 const intptr_t n10 = reinterpret_cast<intptr_t>(mynull);
 const intptr_t n11 = (intptr_t)mynull;
diff --git a/gcc/testsuite/g++.dg/cpp0x/static_assert12.C b/gcc/testsuite/g++.dg/cpp0x/static_assert12.C
index 5d59e540910..2ff5e0092a5 100644
--- a/gcc/testsuite/g++.dg/cpp0x/static_assert12.C
+++ b/gcc/testsuite/g++.dg/cpp0x/static_assert12.C
@@ -27,4 +27,4 @@ main()
   float_thing(1);
 }
 
-// { dg-warning "static_assert without a message only available with " "" { target *-*-* } 21 }
+// { dg-warning "'static_assert' without a message only available with " "" { target *-*-* } 21 }
diff --git a/gcc/testsuite/g++.dg/cpp0x/static_assert8.C b/gcc/testsuite/g++.dg/cpp0x/static_assert8.C
index 239fe17e273..bca38ffa89a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/static_assert8.C
+++ b/gcc/testsuite/g++.dg/cpp0x/static_assert8.C
@@ -6,4 +6,4 @@ static_assert (1 == 0,); // { dg-error "expected string-literal before '\\)'" }
 
 static_assert (1 == 0, "oops"); // { dg-error "static assertion failed" }
 
-// { dg-error "static_assert without a message only available with " "" { target { ! c++17 } } 3 }
+// { dg-error "'static_assert' without a message only available with " "" { target { ! c++17 } } 3 }
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-conv1.C b/gcc/testsuite/g++.dg/cpp1y/lambda-conv1.C
index 2e4ec4964d5..25721259c6b 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-conv1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-conv1.C
@@ -4,10 +4,10 @@
 void foo()
 {
   int i;
-  static_cast<void(*)(int)>([i](auto){});  // { dg-error "invalid static_cast" }
-  static_cast<void(*)(int)>([=](auto){});  // { dg-error "invalid static_cast" }
-  static_cast<void(*)(int)>([&](auto){});  // { dg-error "invalid static_cast" }
-  static_cast<float(*)(float)>([i](auto x){ return x; });  // { dg-error "invalid static_cast" }
-  static_cast<float(*)(float)>([=](auto x){ return x; });  // { dg-error "invalid static_cast" }
-  static_cast<float(*)(float)>([&](auto x){ return x; });  // { dg-error "invalid static_cast" }
+  static_cast<void(*)(int)>([i](auto){});  // { dg-error "invalid 'static_cast'" }
+  static_cast<void(*)(int)>([=](auto){});  // { dg-error "invalid 'static_cast'" }
+  static_cast<void(*)(int)>([&](auto){});  // { dg-error "invalid 'static_cast'" }
+  static_cast<float(*)(float)>([i](auto x){ return x; });  // { dg-error "invalid 'static_cast'" }
+  static_cast<float(*)(float)>([=](auto x){ return x; });  // { dg-error "invalid 'static_cast'" }
+  static_cast<float(*)(float)>([&](auto x){ return x; });  // { dg-error "invalid 'static_cast'" }
 }
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr79393-3.C b/gcc/testsuite/g++.dg/cpp1y/pr79393-3.C
index 23dc2650900..3c73cbbb659 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr79393-3.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr79393-3.C
@@ -18,7 +18,7 @@ struct B : virtual A
 };
 
 B::~B () {
-  throw 1; // { dg-warning "will always call terminate" }
+  throw 1; // { dg-warning "will always call 'terminate'" }
 }
 
 struct C : virtual A
diff --git a/gcc/testsuite/g++.dg/cpp1y/static_assert1.C b/gcc/testsuite/g++.dg/cpp1y/static_assert1.C
index ef655f49097..06815fdace2 100644
--- a/gcc/testsuite/g++.dg/cpp1y/static_assert1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/static_assert1.C
@@ -28,4 +28,4 @@ main()
   float_thing(1);
 }
 
-// { dg-warning "static_assert without a message only available with " "" { target *-*-* } 21 }
+// { dg-warning "'static_assert' without a message only available with " "" { target *-*-* } 21 }
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-if4.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-if4.C
index 612eff83b1e..871e31a286d 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-if4.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-if4.C
@@ -4,7 +4,7 @@
 void f()
 {
   goto l;			// { dg-message "from here" }
-  if constexpr (false)		// { dg-message "enters constexpr if" }
+  if constexpr (false)		// { dg-message "enters 'constexpr if'" }
     {
     l:;				// { dg-error "jump to label" }
     }
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-if5.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-if5.C
index 69d03e3c8b8..9d30b0e32f6 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-if5.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-if5.C
@@ -3,7 +3,7 @@
 
 void f()
 {
-  if constexpr (false)		// { dg-message "enters constexpr if" }
+  if constexpr (false)		// { dg-message "enters 'constexpr if'" }
     {
       goto l;			// { dg-message "from here" }
     }
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-if9.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-if9.C
index 748278af8c9..8aa87f74437 100644
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-if9.C
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-if9.C
@@ -4,7 +4,7 @@
 void f(int i)
 {
   switch (i)
-    if constexpr (false)	// { dg-message "enters constexpr if" }
+    if constexpr (false)	// { dg-message "enters 'constexpr if'" }
       {
       case 42:;			// { dg-error "jump to case label" }
       }
diff --git a/gcc/testsuite/g++.dg/eh/goto2.C b/gcc/testsuite/g++.dg/eh/goto2.C
index 1cd254c0404..7f22f50315f 100644
--- a/gcc/testsuite/g++.dg/eh/goto2.C
+++ b/gcc/testsuite/g++.dg/eh/goto2.C
@@ -8,6 +8,6 @@ try
   } catch (...)
   {
   l2: ;            // { dg-error "jump to label 'l2'" }
-                   // { dg-message "enters catch block" "" { target *-*-*} .-1 }
-    goto l1;       // { dg-message "from here|enters try block" }
+                   // { dg-message "enters 'catch' block" "" { target *-*-*} .-1 }
+    goto l1;       // { dg-message "from here|enters 'try' block" }
   }
diff --git a/gcc/testsuite/g++.dg/eh/goto3.C b/gcc/testsuite/g++.dg/eh/goto3.C
index 250324e08f4..415782cfd1f 100644
--- a/gcc/testsuite/g++.dg/eh/goto3.C
+++ b/gcc/testsuite/g++.dg/eh/goto3.C
@@ -9,6 +9,6 @@ try
   } catch (...)
   {
   l2: ;	    // { dg-error "jump to label 'l2'" }
-		   // { dg-message "enters catch block" "" { target *-*-*} .-1 }
-    goto l1;       // { dg-message "from here|enters try block" }
+		   // { dg-message "enters 'catch' block" "" { target *-*-*} .-1 }
+    goto l1;       // { dg-message "from here|enters 'try' block" }
   }
diff --git a/gcc/testsuite/g++.dg/expr/static_cast8.C b/gcc/testsuite/g++.dg/expr/static_cast8.C
index dc4d2162d6c..6dd7560136c 100644
--- a/gcc/testsuite/g++.dg/expr/static_cast8.C
+++ b/gcc/testsuite/g++.dg/expr/static_cast8.C
@@ -9,9 +9,9 @@ extern C* c;
 
 void pointers(C* c, A2* a2, B1* b1)
 {
-  (void) static_cast<A1*>(c);	// { dg-error "invalid static_cast" }
-  (void) static_cast<C*>(a2);	// { dg-error "invalid static_cast" }
-  (void) static_cast<B2*>(b1);	// { dg-error "invalid static_cast" }
+  (void) static_cast<A1*>(c);	// { dg-error "invalid 'static_cast'" }
+  (void) static_cast<C*>(a2);	// { dg-error "invalid 'static_cast'" }
+  (void) static_cast<B2*>(b1);	// { dg-error "invalid 'static_cast'" }
 }
 
 struct D1; // { dg-message "note: class type 'D1' is incomplete" }
@@ -21,7 +21,7 @@ struct E2; // { dg-message "note: class type 'E2' is incomplete" }
 
 void references(C& c, D2& d2, E1& e1)
 {
-  (void) static_cast<D1&>(c);	// { dg-error "invalid static_cast" }
-  (void) static_cast<C&>(d2);	// { dg-error "invalid static_cast" }
-  (void) static_cast<E2&>(e1);	// { dg-error "invalid static_cast" }
+  (void) static_cast<D1&>(c);	// { dg-error "invalid 'static_cast'" }
+  (void) static_cast<C&>(d2);	// { dg-error "invalid 'static_cast'" }
+  (void) static_cast<E2&>(e1);	// { dg-error "invalid 'static_cast'" }
 }
diff --git a/gcc/testsuite/g++.dg/ext/flexary5.C b/gcc/testsuite/g++.dg/ext/flexary5.C
index d6d8e32818f..d5ec1320496 100644
--- a/gcc/testsuite/g++.dg/ext/flexary5.C
+++ b/gcc/testsuite/g++.dg/ext/flexary5.C
@@ -62,7 +62,7 @@ ASSERT_AT_END (D4, a);
 // below is benign since GCC computes the expected value.
 struct D5: E1, E2, NE { char a[]; };
 
-ASSERT_AT_END (D5, a);   // { dg-warning "offsetof within non-standard-layout" }
+ASSERT_AT_END (D5, a);   // { dg-warning "'offsetof' within non-standard-layout" }
 
 struct A2x_1 {
   size_t n;
@@ -166,29 +166,29 @@ struct A5x {
 
 struct D22: A5x, E1, E2 { };
 
-ASSERT_AT_END (D22, a);   // { dg-warning "offsetof within non-standard-layout" }
+ASSERT_AT_END (D22, a);   // { dg-warning "'offsetof' within non-standard-layout" }
 
 struct D23: E1, A5x, E2 { };
 
-ASSERT_AT_END (D23, a);   // { dg-warning "offsetof within non-standard-layout" }
+ASSERT_AT_END (D23, a);   // { dg-warning "'offsetof' within non-standard-layout" }
 
 struct D24: E1, E2, A5x { };
 
-ASSERT_AT_END (D24, a);   // { dg-warning "offsetof within non-standard-layout" }
+ASSERT_AT_END (D24, a);   // { dg-warning "'offsetof' within non-standard-layout" }
 
 struct DA5x: A5x { };
 
 struct D25: DA5x, E1, E2 { };
 
-ASSERT_AT_END (D25, a);   // { dg-warning "offsetof within non-standard-layout" }
+ASSERT_AT_END (D25, a);   // { dg-warning "'offsetof' within non-standard-layout" }
 
 struct D26: E1, DA5x, E2 { };
 
-ASSERT_AT_END (D26, a);   // { dg-warning "offsetof within non-standard-layout" }
+ASSERT_AT_END (D26, a);   // { dg-warning "'offsetof' within non-standard-layout" }
 
 struct D27: E1, E2, DA5x { };
 
-ASSERT_AT_END (D27, a);   // { dg-warning "offsetof within non-standard-layout" }
+ASSERT_AT_END (D27, a);   // { dg-warning "'offsetof' within non-standard-layout" }
 
 // Verfify that a flexible array member is diagnosed even when deep
 // in the base class hierarchy.
diff --git a/gcc/testsuite/g++.dg/ext/utf-array-short-wchar.C b/gcc/testsuite/g++.dg/ext/utf-array-short-wchar.C
index f37f93c8b73..8f0a7327ab2 100644
--- a/gcc/testsuite/g++.dg/ext/utf-array-short-wchar.C
+++ b/gcc/testsuite/g++.dg/ext/utf-array-short-wchar.C
@@ -21,9 +21,9 @@ const char16_t	s16_2[]	= U"ab";	/* { dg-error "from a string literal with type a
 const char16_t	s16_3[]	= L"ab";	/* { dg-error "from a string literal with type array of .wchar_t." } */
 const char16_t	s16_4[]	= u8"ab";	/* { dg-error "from a string literal with type array of .char." } */
 
-const char16_t	s16_5[0] = u"ab";	/* { dg-error "chars is too long" } */
-const char16_t	s16_6[1] = u"ab";	/* { dg-error "chars is too long" } */
-const char16_t	s16_7[2] = u"ab";	/* { dg-error "chars is too long" } */
+const char16_t	s16_5[0] = u"ab";	/* { dg-error "initializer-string for 'const char16_t \\\[0]' is too long" } */
+const char16_t	s16_6[1] = u"ab";	/* { dg-error "initializer-string for 'const char16_t \\\[1]' is too long" } */
+const char16_t	s16_7[2] = u"ab";	/* { dg-error "initializer-string for 'const char16_t \\\[2]' is too long" } */
 const char16_t	s16_8[3] = u"ab";
 const char16_t	s16_9[4] = u"ab";
 
@@ -33,9 +33,9 @@ const char32_t	s32_2[]	= U"ab";
 const char32_t	s32_3[]	= L"ab";	/* { dg-error "from a string literal with type array of .wchar_t." } */
 const char32_t	s32_4[]	= u8"ab";	/* { dg-error "from a string literal with type array of .char." } */
 
-const char32_t	s32_5[0] = U"ab";	/* { dg-error "chars is too long" } */
-const char32_t	s32_6[1] = U"ab";	/* { dg-error "chars is too long" } */
-const char32_t	s32_7[2] = U"ab";	/* { dg-error "chars is too long" } */
+const char32_t	s32_5[0] = U"ab";	/* { dg-error "initializer-string for 'const char32_t \\\[0]' is too long" } */
+const char32_t	s32_6[1] = U"ab";	/* { dg-error "initializer-string for 'const char32_t \\\[1]' is too long" } */
+const char32_t	s32_7[2] = U"ab";	/* { dg-error "initializer-string for 'const char32_t \\\[2]' is too long" } */
 const char32_t	s32_8[3] = U"ab";
 const char32_t	s32_9[4] = U"ab";
 
diff --git a/gcc/testsuite/g++.dg/ext/utf-array.C b/gcc/testsuite/g++.dg/ext/utf-array.C
index 0e403db7e05..e539cd45063 100644
--- a/gcc/testsuite/g++.dg/ext/utf-array.C
+++ b/gcc/testsuite/g++.dg/ext/utf-array.C
@@ -21,9 +21,9 @@ const char16_t	s16_2[]	= U"ab";	/* { dg-error "from a string literal with type a
 const char16_t	s16_3[]	= L"ab";	/* { dg-error "from a string literal with type array of .wchar_t." } */
 const char16_t	s16_4[]	= u8"ab";	/* { dg-error "from a string literal with type array of .char." } */
 
-const char16_t	s16_5[0] = u"ab";	/* { dg-error "chars is too long" } */
-const char16_t	s16_6[1] = u"ab";	/* { dg-error "chars is too long" } */
-const char16_t	s16_7[2] = u"ab";	/* { dg-error "chars is too long" } */
+const char16_t	s16_5[0] = u"ab";	/* { dg-error "initializer-string for 'const char16_t \\\[0]' is too long" } */
+const char16_t	s16_6[1] = u"ab";	/* { dg-error "initializer-string for 'const char16_t \\\[1]' is too long" } */
+const char16_t	s16_7[2] = u"ab";	/* { dg-error "initializer-string for 'const char16_t \\\[2]' is too long" } */
 const char16_t	s16_8[3] = u"ab";
 const char16_t	s16_9[4] = u"ab";
 
@@ -33,9 +33,9 @@ const char32_t	s32_2[]	= U"ab";
 const char32_t	s32_3[]	= L"ab";	/* { dg-error "from a string literal with type array of .wchar_t." } */
 const char32_t	s32_4[]	= u8"ab";	/* { dg-error "from a string literal with type array of .char." } */
 
-const char32_t	s32_5[0] = U"ab";	/* { dg-error "chars is too long" } */
-const char32_t	s32_6[1] = U"ab";	/* { dg-error "chars is too long" } */
-const char32_t	s32_7[2] = U"ab";	/* { dg-error "chars is too long" } */
+const char32_t	s32_5[0] = U"ab";	/* { dg-error "initializer-string for 'const char32_t \\\[0]' is too long" } */
+const char32_t	s32_6[1] = U"ab";	/* { dg-error "initializer-string for 'const char32_t \\\[1]' is too long" } */
+const char32_t	s32_7[2] = U"ab";	/* { dg-error "initializer-string for 'const char32_t \\\[2]' is too long" } */
 const char32_t	s32_8[3] = U"ab";
 const char32_t	s32_9[4] = U"ab";
 
diff --git a/gcc/testsuite/g++.dg/ext/utf8-2.C b/gcc/testsuite/g++.dg/ext/utf8-2.C
index b13d55f1139..1db5c383fd6 100644
--- a/gcc/testsuite/g++.dg/ext/utf8-2.C
+++ b/gcc/testsuite/g++.dg/ext/utf8-2.C
@@ -12,16 +12,16 @@ const char16_t	s1[]	= u8"ab";	// { dg-error "from a string literal with type arr
 const char32_t  s2[]    = u8"ab";	// { dg-error "from a string literal with type array of .char." }
 const wchar_t   s3[]    = u8"ab";	// { dg-error "from a string literal with type array of .char." }
 
-const u8_char_t      t0[0]   = u8"ab";	// { dg-error "chars is too long" }
-const u8_char_t      t1[1]   = u8"ab";	// { dg-error "chars is too long" }
-const u8_char_t      t2[2]   = u8"ab";	// { dg-error "chars is too long" }
+const u8_char_t      t0[0]   = u8"ab";	// { dg-error "initializer-string for 'const u8_char_t \\\[0]' {aka 'const char \\\[0]'} is too long" }
+const u8_char_t      t1[1]   = u8"ab";	// { dg-error "initializer-string for 'const u8_char_t \\\[1]' {aka 'const char \\\[1]'} is too long" }
+const u8_char_t      t2[2]   = u8"ab";	// { dg-error "initializer-string for 'const u8_char_t \\\[2]' {aka 'const char \\\[2]'} is too long" }
 const u8_char_t      t3[3]   = u8"ab";
 const u8_char_t      t4[4]   = u8"ab";
 
-const u8_char_t      u0[0]   = u8"\u2160.";	// { dg-error "chars is too long" }
-const u8_char_t      u1[1]   = u8"\u2160.";	// { dg-error "chars is too long" }
-const u8_char_t      u2[2]   = u8"\u2160.";	// { dg-error "chars is too long" }
-const u8_char_t      u3[3]   = u8"\u2160.";	// { dg-error "chars is too long" }
-const u8_char_t      u4[4]   = u8"\u2160.";	// { dg-error "chars is too long" }
+const u8_char_t      u0[0]   = u8"\u2160.";	// { dg-error "initializer-string for 'const u8_char_t \\\[0]' {aka 'const char \\\[0]'} is too long" }
+const u8_char_t      u1[1]   = u8"\u2160.";	// { dg-error "initializer-string for 'const u8_char_t \\\[1]' {aka 'const char \\\[1]'} is too long" }
+const u8_char_t      u2[2]   = u8"\u2160.";	// { dg-error "initializer-string for 'const u8_char_t \\\[2]' {aka 'const char \\\[2]'} is too long" }
+const u8_char_t      u3[3]   = u8"\u2160.";	// { dg-error "initializer-string for 'const u8_char_t \\\[3]' {aka 'const char \\\[3]'} is too long" }
+const u8_char_t      u4[4]   = u8"\u2160.";	// { dg-error "initializer-string for 'const u8_char_t \\\[4]' {aka 'const char \\\[4]'} is too long" }
 const u8_char_t      u5[5]   = u8"\u2160.";
 const u8_char_t      u6[6]   = u8"\u2160.";
diff --git a/gcc/testsuite/g++.dg/gomp/loop-4.C b/gcc/testsuite/g++.dg/gomp/loop-4.C
index cd85dbdb989..c45d43efe8a 100644
--- a/gcc/testsuite/g++.dg/gomp/loop-4.C
+++ b/gcc/testsuite/g++.dg/gomp/loop-4.C
@@ -81,28 +81,28 @@ f0 ()
   for (i = 64; i != 0; i += k)
     ;
   #pragma omp for
-  for (i = 0; i != 64; i += m)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = 0; i != 64; i += m)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = 64; i != 0; i -= m)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = 64; i != 0; i -= m)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = 0; i != 64; i -= n)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = 0; i != 64; i -= n)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = 64; i != 0; i += n)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = 64; i != 0; i += n)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = 0; i != 64; i += o)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = 0; i != 64; i += o)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = 64; i != 0; i -= o)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = 64; i != 0; i -= o)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = 0; i != 64; i -= p)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = 0; i != 64; i -= p)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = 64; i != 0; i += p)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = 64; i != 0; i += p)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
 }
 
@@ -165,63 +165,63 @@ f1 (I<int> &x, I<int> &y, I<int> &u, I<int> &v)
   for (i = y; i != x; i = l + i)
     ;
   #pragma omp for
-  for (i = x; i != y; i = i + 2)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = x; i != y; i = i + 2)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = x; i != y; i = 7 + i)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = x; i != y; i = 7 + i)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = y; i != x; i = i - 2)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = y; i != x; i = i - 2)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = y; i != x; i = -7 + i)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = y; i != x; i = -7 + i)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = x; i != y; i = i + m)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = x; i != y; i = i + m)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = x; i != y; i = m + i)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = x; i != y; i = m + i)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = y; i != x; i = i - m)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = y; i != x; i = i - m)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = y; i != x; i = -m + i)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = y; i != x; i = -m + i)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = x; i != y; i = i - n)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = x; i != y; i = i - n)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = x; i != y; i = -n + i)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = x; i != y; i = -n + i)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = y; i != x; i = i + n)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = y; i != x; i = i + n)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = y; i != x; i = n + i)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = y; i != x; i = n + i)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = x; i != y; i = i + o)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = x; i != y; i = i + o)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = x; i != y; i = o + i)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = x; i != y; i = o + i)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = y; i != x; i = i - o)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = y; i != x; i = i - o)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = y; i != x; i = -o + i)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = y; i != x; i = -o + i)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = x; i != y; i = i - p)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = x; i != y; i = i - p)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = x; i != y; i = -p + i)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = x; i != y; i = -p + i)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = y; i != x; i = i + p)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = y; i != x; i = i + p)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
   #pragma omp for
-  for (i = y; i != x; i = p + i)	// { dg-error "increment is not constant 1 or -1 for != condition" }
+  for (i = y; i != x; i = p + i)	// { dg-error "increment is not constant 1 or -1 for '!=' condition" }
     ;
 }
diff --git a/gcc/testsuite/g++.dg/gomp/macro-4.C b/gcc/testsuite/g++.dg/gomp/macro-4.C
index 6a69f1a3ca1..dcc8bcbc8e5 100644
--- a/gcc/testsuite/g++.dg/gomp/macro-4.C
+++ b/gcc/testsuite/g++.dg/gomp/macro-4.C
@@ -10,9 +10,9 @@ void bar (void);
 void
 foo (void)
 {
-#pragma omp p		// { dg-warning "-:ignoring #pragma omp _Pragma" }
+#pragma omp p		// { dg-warning "-:ignoring '#pragma omp _Pragma'" }
     bar ();
-  omp_p			// { dg-warning "-:ignoring #pragma omp _Pragma" }
+  omp_p			// { dg-warning "-:ignoring '#pragma omp _Pragma'" }
     bar ();
 }
 
@@ -22,8 +22,8 @@ foo (void)
 void
 baz (void)
 {
-#pragma omp parallel	// { dg-warning "-:ignoring #pragma omp serial" }
+#pragma omp parallel	// { dg-warning "-:ignoring '#pragma omp serial'" }
     bar ();
-  omp_parallel		// { dg-warning "-:ignoring #pragma omp serial" }
+  omp_parallel		// { dg-warning "-:ignoring '#pragma omp serial'" }
     bar ();
 }
diff --git a/gcc/testsuite/g++.dg/gomp/udr-1.C b/gcc/testsuite/g++.dg/gomp/udr-1.C
index 10c1c8dab92..c07a89b9d6a 100644
--- a/gcc/testsuite/g++.dg/gomp/udr-1.C
+++ b/gcc/testsuite/g++.dg/gomp/udr-1.C
@@ -86,11 +86,11 @@ namespace N5
 namespace N6
 {
   struct A { int a; A () : a (0) {} };
-  #pragma omp declare reduction (| : const A : omp_out.a |= omp_in.a)	// { dg-error "const, volatile or __restrict" }
-  #pragma omp declare reduction (+ : __const A : omp_out.a += omp_in.a)	// { dg-error "const, volatile or __restrict" }
+  #pragma omp declare reduction (| : const A : omp_out.a |= omp_in.a)	// { dg-error "'const', 'volatile' or '__restrict'" }
+  #pragma omp declare reduction (+ : __const A : omp_out.a += omp_in.a)	// { dg-error "'const', 'volatile' or '__restrict'" }
   typedef volatile A T;
-  #pragma omp declare reduction (min : T : omp_out.a += omp_in.a)	// { dg-error "const, volatile or __restrict" }
-  #pragma omp declare reduction (* : A *__restrict : omp_out->a *= omp_in->a)// { dg-error "const, volatile or __restrict" }
+  #pragma omp declare reduction (min : T : omp_out.a += omp_in.a)	// { dg-error "'const', 'volatile' or '__restrict'" }
+  #pragma omp declare reduction (* : A *__restrict : omp_out->a *= omp_in->a)// { dg-error "'const', 'volatile' or '__restrict'" }
 }
 namespace N7
 {
@@ -98,21 +98,21 @@ namespace N7
   template <typename T1, typename T2, typename T3, typename T4>
   struct S
   {
-    #pragma omp declare reduction (| : T1 : omp_out |= omp_in)		// { dg-error "const, volatile or __restrict" }
-    #pragma omp declare reduction (+ : T2 : omp_out += omp_in)		// { dg-error "const, volatile or __restrict" }
+    #pragma omp declare reduction (| : T1 : omp_out |= omp_in)		// { dg-error "'const', 'volatile' or '__restrict'" }
+    #pragma omp declare reduction (+ : T2 : omp_out += omp_in)		// { dg-error "'const', 'volatile' or '__restrict'" }
     typedef T3 T;
-    #pragma omp declare reduction (min : T : omp_out += omp_in)		// { dg-error "const, volatile or __restrict" }
-    #pragma omp declare reduction (* : T4 : omp_out *= omp_in)		// { dg-error "const, volatile or __restrict" }
+    #pragma omp declare reduction (min : T : omp_out += omp_in)		// { dg-error "'const', 'volatile' or '__restrict'" }
+    #pragma omp declare reduction (* : T4 : omp_out *= omp_in)		// { dg-error "'const', 'volatile' or '__restrict'" }
   };
   S<const A, __const A, volatile A, A *__restrict> s;
   template <typename T1, typename T2, typename T3, typename T4>
   int foo ()
   {
-    #pragma omp declare reduction (| : T1 : omp_out |= omp_in)		// { dg-error "const, volatile or __restrict" }
-    #pragma omp declare reduction (+ : T2 : omp_out += omp_in)		// { dg-error "const, volatile or __restrict" }
+    #pragma omp declare reduction (| : T1 : omp_out |= omp_in)		// { dg-error "'const', 'volatile' or '__restrict'" }
+    #pragma omp declare reduction (+ : T2 : omp_out += omp_in)		// { dg-error "'const', 'volatile' or '__restrict'" }
     typedef T3 T;
-    #pragma omp declare reduction (min : T : omp_out += omp_in)		// { dg-error "const, volatile or __restrict" }
-    #pragma omp declare reduction (* : T4 : omp_out *= omp_in)		// { dg-error "const, volatile or __restrict" }
+    #pragma omp declare reduction (min : T : omp_out += omp_in)		// { dg-error "'const', 'volatile' or '__restrict'" }
+    #pragma omp declare reduction (* : T4 : omp_out *= omp_in)		// { dg-error "'const', 'volatile' or '__restrict'" }
     return 0;
   }
   int x = foo <const A, __const A, volatile A, A *__restrict> ();
diff --git a/gcc/testsuite/g++.dg/init/initializer-string-too-long.C b/gcc/testsuite/g++.dg/init/initializer-string-too-long.C
index c4ce468bae4..064e1ace466 100644
--- a/gcc/testsuite/g++.dg/init/initializer-string-too-long.C
+++ b/gcc/testsuite/g++.dg/init/initializer-string-too-long.C
@@ -2,7 +2,7 @@
 
 /* Verify that we highlight *which* string is too long.  */
 
-char test[3][4] = { "ok", "too long", "ok" }; // { dg-error "initializer-string for array of chars is too long" }
+char test[3][4] = { "ok", "too long", "ok" }; // { dg-error "initializer-string for 'char \\\[4]' is too long" }
 /* { dg-begin-multiline-output "" }
  char test[3][4] = { "ok", "too long", "ok" };
                            ^~~~~~~~~~
diff --git a/gcc/testsuite/g++.dg/other/offsetof9.C b/gcc/testsuite/g++.dg/other/offsetof9.C
index bd80fa5e2cf..1936f2e5f76 100644
--- a/gcc/testsuite/g++.dg/other/offsetof9.C
+++ b/gcc/testsuite/g++.dg/other/offsetof9.C
@@ -4,14 +4,14 @@
 
 struct A { int i; };
 struct B : virtual A { };
-__SIZE_TYPE__ s = __builtin_offsetof (B, A::i);	// { dg-warning "offsetof within non-standard-layout type" }
+__SIZE_TYPE__ s = __builtin_offsetof (B, A::i);	// { dg-warning "'offsetof' within non-standard-layout type" }
 
 template <typename T>
 __SIZE_TYPE__
 foo ()
 {
-  return __builtin_offsetof (T, A::i)		// { dg-warning "offsetof within non-standard-layout type" }
-	 + __builtin_offsetof (B, A::i);	// { dg-warning "offsetof within non-standard-layout type" }
+  return __builtin_offsetof (T, A::i)		// { dg-warning "'offsetof' within non-standard-layout type" }
+	 + __builtin_offsetof (B, A::i);	// { dg-warning "'offsetof' within non-standard-layout type" }
 }
 
 __SIZE_TYPE__ t = foo<B> ();
diff --git a/gcc/testsuite/g++.dg/ubsan/pr63956.C b/gcc/testsuite/g++.dg/ubsan/pr63956.C
index 34b5dd71ec2..cd67c32a547 100644
--- a/gcc/testsuite/g++.dg/ubsan/pr63956.C
+++ b/gcc/testsuite/g++.dg/ubsan/pr63956.C
@@ -11,7 +11,7 @@ fn1 (int a, int b)
   if (b != 2)
     a <<= b;
     // { dg-error "5 << -2.. is negative" "" { target *-*-* } .-1 }
-    // { dg-error "is >= than the precision of the left operand" "" { target *-*-* } .-2 }
+    // { dg-error "is greater than or equal to the precision of the left operand" "" { target *-*-* } .-2 }
     // { dg-error "-2 << 4.. is negative" "" { target *-*-* } .-3 }
   return a;
 }
@@ -34,7 +34,7 @@ fn2 (int a, int b)
   if (b != 2)
     a >>= b;
     // { dg-error "4 >> -1.. is negative" "" { target *-*-* } .-1 }
-    // { dg-error "is >= than the precision of the left operand" "" { target *-*-* } .-2 }
+    // { dg-error "is greater than or equal to the precision of the left operand" "" { target *-*-* } .-2 }
 
   return a;
 }
diff --git a/gcc/testsuite/g++.dg/warn/Wbool-operation-1.C b/gcc/testsuite/g++.dg/warn/Wbool-operation-1.C
index 4512b858287..82e9ead445d 100644
--- a/gcc/testsuite/g++.dg/warn/Wbool-operation-1.C
+++ b/gcc/testsuite/g++.dg/warn/Wbool-operation-1.C
@@ -6,6 +6,6 @@ template <class c>
 decltype (~c{})
 call ()
 {
-  return ~false; // { dg-warning "on an expression of type bool" }
+  return ~false; // { dg-warning "on an expression of type 'bool'" }
 }
 template int call<bool>();
diff --git a/gcc/testsuite/g++.dg/warn/Wtype-limits-Wextra.C b/gcc/testsuite/g++.dg/warn/Wtype-limits-Wextra.C
index 0cee96a8a98..99e1e89b4b7 100644
--- a/gcc/testsuite/g++.dg/warn/Wtype-limits-Wextra.C
+++ b/gcc/testsuite/g++.dg/warn/Wtype-limits-Wextra.C
@@ -30,10 +30,10 @@ void b (unsigned short x)
 
 void c (unsigned int x)
 {
-  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
-  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
+  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
+  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
   if (1U >= 0) return;
   if (1U < 0) return;
   if (0 <= 1U) return;
@@ -42,18 +42,18 @@ void c (unsigned int x)
 
 void d (unsigned long x)
 {
-  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
-  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
+  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
+  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
 }
 
 void e (unsigned long long x)
 {
-  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
-  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
+  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
+  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
 }
 
 int test (int x) 
diff --git a/gcc/testsuite/g++.dg/warn/Wtype-limits.C b/gcc/testsuite/g++.dg/warn/Wtype-limits.C
index 7919a42c834..6a968d953db 100644
--- a/gcc/testsuite/g++.dg/warn/Wtype-limits.C
+++ b/gcc/testsuite/g++.dg/warn/Wtype-limits.C
@@ -30,10 +30,10 @@ void b (unsigned short x)
 
 void c (unsigned int x)
 {
-  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
-  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
+  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
+  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
   if (1U >= 0) return;
   if (1U < 0) return;
   if (0 <= 1U) return;
@@ -42,18 +42,18 @@ void c (unsigned int x)
 
 void d (unsigned long x)
 {
-  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
-  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
+  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
+  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
 }
 
 void e (unsigned long long x)
 {
-  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
-  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
+  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
+  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
 }
 
 int test (int x) 
diff --git a/gcc/testsuite/g++.dg/wrappers/pr88680.C b/gcc/testsuite/g++.dg/wrappers/pr88680.C
index 1bd6292857d..8f8bdd6359e 100644
--- a/gcc/testsuite/g++.dg/wrappers/pr88680.C
+++ b/gcc/testsuite/g++.dg/wrappers/pr88680.C
@@ -27,9 +27,9 @@ void test(unsigned n)
     return;
   if (N >= FOO)
     return;
-  if (n >= 0) // { dg-warning ">= 0 is always true" }
+  if (n >= 0) // { dg-warning "'>= 0' is always true" }
     return;
-  if (n < 0) // { dg-warning "< 0 is always false" }
+  if (n < 0) // { dg-warning "'< 0' is always false" }
     return;
   if (n >= FOO)
     return;
@@ -45,9 +45,9 @@ void test(unsigned n)
     return;
   if (0 <= FOO)
     return;
-  if (0 <= n) // { dg-warning ">= 0 is always true" }
+  if (0 <= n) // { dg-warning "'>= 0' is always true" }
     return;
-  if (0 > n) // { dg-warning "< 0 is always false" }
+  if (0 > n) // { dg-warning "'< 0' is always false" }
     return;
   if (N <= FOO)
     return;
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh55.C b/gcc/testsuite/g++.old-deja/g++.mike/eh55.C
index af43f66b1ba..5835c963be6 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh55.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh55.C
@@ -9,7 +9,7 @@ void my_terminate_handler() {
 }
 
 void throw_an_unexpected_exception() throw() {
-  throw 1;	// { dg-warning "throw will always call terminate" "" { target c++17 } }
+  throw 1;	// { dg-warning "'throw' will always call 'terminate'" "" { target c++17 } }
 }
 
 int main() {
diff --git a/gcc/testsuite/gcc.dg/Wsign-compare-1.c b/gcc/testsuite/gcc.dg/Wsign-compare-1.c
index be3bd2fcbd8..b40bc6c5fee 100644
--- a/gcc/testsuite/gcc.dg/Wsign-compare-1.c
+++ b/gcc/testsuite/gcc.dg/Wsign-compare-1.c
@@ -5,7 +5,7 @@
 unsigned int
 f0 (int x, unsigned int y)
 {
-  return x ? y : -1; /* { dg-warning "18:operand of \\?: changes signedness from 'int' to 'unsigned int'" } */
+  return x ? y : -1; /* { dg-warning "18:operand of '\\?:' changes signedness from 'int' to 'unsigned int'" } */
 /* { dg-begin-multiline-output "" }
    return x ? y : -1;
                   ^~
@@ -15,7 +15,7 @@ f0 (int x, unsigned int y)
 unsigned int
 f1 (int xxx, unsigned int yyy)
 {
-  return xxx ? yyy : -1; /* { dg-warning "22:operand of \\?: changes signedness from 'int' to 'unsigned int'" } */
+  return xxx ? yyy : -1; /* { dg-warning "22:operand of '\\?:' changes signedness from 'int' to 'unsigned int'" } */
 /* { dg-begin-multiline-output "" }
    return xxx ? yyy : -1;
                       ^~
@@ -25,7 +25,7 @@ f1 (int xxx, unsigned int yyy)
 unsigned int
 f2 (int xxx, unsigned int yyy)
 {
-  return xxx ? -1 : yyy; /* { dg-warning "16:operand of \\?: changes signedness from 'int' to 'unsigned int'" } */
+  return xxx ? -1 : yyy; /* { dg-warning "16:operand of '\\?:' changes signedness from 'int' to 'unsigned int'" } */
 /* { dg-begin-multiline-output "" }
    return xxx ? -1 : yyy;
                 ^~
@@ -35,7 +35,7 @@ f2 (int xxx, unsigned int yyy)
 unsigned int
 f3 (unsigned int yyy)
 {
-  return yyy ?: -1; /* { dg-warning "17:operand of \\?: changes signedness from 'int' to 'unsigned int'" } */
+  return yyy ?: -1; /* { dg-warning "17:operand of '\\?:' changes signedness from 'int' to 'unsigned int'" } */
 /* { dg-begin-multiline-output "" }
    return yyy ?: -1;
                  ^~
@@ -45,7 +45,7 @@ f3 (unsigned int yyy)
 unsigned int
 f4 (int xxx, unsigned yyy, short uuu)
 {
-  return xxx ? yyy : uuu; /* { dg-warning "22:operand of \\?: changes signedness from 'short int' to 'unsigned int'" } */
+  return xxx ? yyy : uuu; /* { dg-warning "22:operand of '\\?:' changes signedness from 'short int' to 'unsigned int'" } */
 /* { dg-begin-multiline-output "" }
    return xxx ? yyy : uuu;
                       ^~~
@@ -55,7 +55,7 @@ f4 (int xxx, unsigned yyy, short uuu)
 unsigned int
 f5 (int xxx, unsigned yyy, short uuu)
 {
-  return xxx ? uuu : yyy; /* { dg-warning "16:operand of \\?: changes signedness from 'short int' to 'unsigned int'" } */
+  return xxx ? uuu : yyy; /* { dg-warning "16:operand of '\\?:' changes signedness from 'short int' to 'unsigned int'" } */
 /* { dg-begin-multiline-output "" }
    return xxx ? uuu : yyy;
                 ^~~
@@ -65,7 +65,7 @@ f5 (int xxx, unsigned yyy, short uuu)
 unsigned int
 f6 (int xxx, unsigned yyy, signed char uuu)
 {
-  return xxx ? yyy : uuu; /* { dg-warning "22:operand of \\?: changes signedness from 'signed char' to 'unsigned int'" } */
+  return xxx ? yyy : uuu; /* { dg-warning "22:operand of '\\?:' changes signedness from 'signed char' to 'unsigned int'" } */
 /* { dg-begin-multiline-output "" }
    return xxx ? yyy : uuu;
                       ^~~
@@ -75,7 +75,7 @@ f6 (int xxx, unsigned yyy, signed char uuu)
 unsigned int
 f7 (int xxx, unsigned yyy, signed char uuu)
 {
-  return xxx ? uuu : yyy; /* { dg-warning "16:operand of \\?: changes signedness from 'signed char' to 'unsigned int'" } */
+  return xxx ? uuu : yyy; /* { dg-warning "16:operand of '\\?:' changes signedness from 'signed char' to 'unsigned int'" } */
 /* { dg-begin-multiline-output "" }
    return xxx ? uuu : yyy;
                 ^~~
diff --git a/gcc/testsuite/gcc.dg/Wtype-limits-Wextra.c b/gcc/testsuite/gcc.dg/Wtype-limits-Wextra.c
index e5e7f944476..d04ecb7f344 100644
--- a/gcc/testsuite/gcc.dg/Wtype-limits-Wextra.c
+++ b/gcc/testsuite/gcc.dg/Wtype-limits-Wextra.c
@@ -21,22 +21,22 @@ void a (unsigned char x)
 }
 
 void b (unsigned short x)
-{                    /* { dg-warning "comparison of unsigned expression < 0 is always false" "" { target { ! int32plus } } .+1 } */
+{                    /* { dg-warning "comparison of unsigned expression '< 0' is always false" "" { target { ! int32plus } } .+1 } */
   if (x < 0)  return;/* { dg-warning "comparison is always false due to limited range of data type" "" { target { int32plus } } } */
-                     /* { dg-warning "comparison of unsigned expression >= 0 is always true" "" { target { ! int32plus } } .+1 } */
+                     /* { dg-warning "comparison of unsigned expression '>= 0' is always true" "" { target { ! int32plus } } .+1 } */
   if (x >= 0) return;/* { dg-warning "comparison is always true due to limited range of data type" "" { target { int32plus } } } */
-                     /* { dg-warning "comparison of unsigned expression < 0 is always false" "" { target { ! int32plus } } .+1 } */
+                     /* { dg-warning "comparison of unsigned expression '< 0' is always false" "" { target { ! int32plus } } .+1 } */
   if (0 > x)  return;/* { dg-warning "comparison is always false due to limited range of data type" "" { target { int32plus } } } */
-                     /* { dg-warning "comparison of unsigned expression >= 0 is always true" "" { target { ! int32plus } } .+1 } */
+                     /* { dg-warning "comparison of unsigned expression '>= 0' is always true" "" { target { ! int32plus } } .+1 } */
   if (0 <= x) return;/* { dg-warning "comparison is always true due to limited range of data type" "" { target { int32plus } } } */
 }
 
 void c (unsigned int x)
 {
-  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
-  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
+  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
+  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
   if (1U >= 0) return;
   if (1U < 0) return;
   if (0 <= 1U) return;
@@ -45,18 +45,18 @@ void c (unsigned int x)
 
 void d (unsigned long x)
 {
-  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
-  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
+  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
+  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
 }
 
 void e (unsigned long long x)
 {
-  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
-  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
+  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
+  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
 }
 
 int test (int x) 
diff --git a/gcc/testsuite/gcc.dg/Wtype-limits.c b/gcc/testsuite/gcc.dg/Wtype-limits.c
index 2d6f9910d44..6a596fc3a3c 100644
--- a/gcc/testsuite/gcc.dg/Wtype-limits.c
+++ b/gcc/testsuite/gcc.dg/Wtype-limits.c
@@ -21,22 +21,22 @@ void a (unsigned char x)
 }
 
 void b (unsigned short x)
-{                    /* { dg-warning "comparison of unsigned expression < 0 is always false" "" { target { ! int32plus } } .+1 } */
+{                    /* { dg-warning "comparison of unsigned expression in '< 0' is always false" "" { target { ! int32plus } } .+1 } */
   if (x < 0)  return;/* { dg-warning "comparison is always false due to limited range of data type" "" { target { int32plus } } } */
-                     /* { dg-warning "comparison of unsigned expression >= 0 is always true" "" { target { ! int32plus } } .+1 } */
+                     /* { dg-warning "comparison of unsigned expression in '>= 0' is always true" "" { target { ! int32plus } } .+1 } */
   if (x >= 0) return;/* { dg-warning "comparison is always true due to limited range of data type" "" { target { int32plus } } } */  
-                     /* { dg-warning "comparison of unsigned expression < 0 is always false" "" { target { ! int32plus } } .+1 } */
+                     /* { dg-warning "comparison of unsigned expression in '< 0' is always false" "" { target { ! int32plus } } .+1 } */
   if (0 > x)  return;/* { dg-warning "comparison is always false due to limited range of data type" "" { target { int32plus } } } */
-                     /* { dg-warning "comparison of unsigned expression >= 0 is always true" "" { target { ! int32plus } } .+1 } */
+                     /* { dg-warning "comparison of unsigned expression in '>= 0' is always true" "" { target { ! int32plus } } .+1 } */
   if (0 <= x) return;/* { dg-warning "comparison is always true due to limited range of data type" "" { target { int32plus } } } */
 }
 
 void c (unsigned int x)
 {
-  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
-  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
+  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
+  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
   if (1U >= 0) return;
   if (1U < 0) return;
   if (0 <= 1U) return;
@@ -45,18 +45,18 @@ void c (unsigned int x)
 
 void d (unsigned long x)
 {
-  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
-  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
+  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
+  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
 }
 
 void e (unsigned long long x)
 {
-  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
-  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression < 0 is always false" } */
-  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression >= 0 is always true" } */
+  if (x < 0)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (x >= 0) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
+  if (0 > x)  return;/* { dg-warning "comparison of unsigned expression in '< 0' is always false" } */
+  if (0 <= x) return;/* { dg-warning "comparison of unsigned expression in '>= 0' is always true" } */
 }
 
 int test (int x) 
diff --git a/gcc/testsuite/gcc.dg/Wunknownprag.c b/gcc/testsuite/gcc.dg/Wunknownprag.c
index 3514825a97e..158cab71511 100644
--- a/gcc/testsuite/gcc.dg/Wunknownprag.c
+++ b/gcc/testsuite/gcc.dg/Wunknownprag.c
@@ -5,7 +5,7 @@
 
 /* We used to get "unspellable token: CPP_EOF" warnings.  */
 
-#pragma				/* { dg-warning "-:ignoring #pragma" } */
-#pragma ~			/* { dg-warning "-:ignoring #pragma" } */
-#pragma baz			/* { dg-warning "-:ignoring #pragma" } */
-#pragma baz baz			/* { dg-warning "-:ignoring #pragma" } */
+#pragma				/* { dg-warning "-:ignoring '#pragma" } */
+#pragma ~			/* { dg-warning "-:ignoring '#pragma" } */
+#pragma baz			/* { dg-warning "-:ignoring '#pragma" } */
+#pragma baz baz			/* { dg-warning "-:ignoring '#pragma baz baz'" } */
diff --git a/gcc/testsuite/gcc.dg/Wunsuffixed-float-constants-1.c b/gcc/testsuite/gcc.dg/Wunsuffixed-float-constants-1.c
index b4a38d5cb10..ba992c45c03 100644
--- a/gcc/testsuite/gcc.dg/Wunsuffixed-float-constants-1.c
+++ b/gcc/testsuite/gcc.dg/Wunsuffixed-float-constants-1.c
@@ -8,8 +8,8 @@ double a = 1.1d;
 /* With FLOAT_CONST_DECIMAL64 switched to ON these would have type
    _Decimal64.  */
 
-double b = VAL;		/* { dg-warning "unsuffixed float constant" } */
-double c = 1.2;		/* { dg-warning "unsuffixed float constant" } */
+double b = VAL;		/* { dg-warning "unsuffixed floating constant" } */
+double c = 1.2;		/* { dg-warning "unsuffixed floating constant" } */
 
 /* With FLOAT_CONST_DECIMAL64 switched to ON these are still binary.  */
 
diff --git a/gcc/testsuite/gcc.dg/asm-6.c b/gcc/testsuite/gcc.dg/asm-6.c
index 9c0ac1eb27e..10983c77c55 100644
--- a/gcc/testsuite/gcc.dg/asm-6.c
+++ b/gcc/testsuite/gcc.dg/asm-6.c
@@ -2,6 +2,6 @@
 void foo ()
 {
   int i;
-  __asm__ ("" : [data] "=r" (i) : [data] "i" (100)); /* { dg-error "duplicate asm operand" } */
+  __asm__ ("" : [data] "=r" (i) : [data] "i" (100)); /* { dg-error "duplicate 'asm' operand" } */
   __asm__ ("%[foo]" :: [bar] "i" (1)); /* { dg-error "undefined named operand" } */
 }
diff --git a/gcc/testsuite/gcc.dg/asm-qual-1.c b/gcc/testsuite/gcc.dg/asm-qual-1.c
index eff6b45d217..7278be84ac6 100644
--- a/gcc/testsuite/gcc.dg/asm-qual-1.c
+++ b/gcc/testsuite/gcc.dg/asm-qual-1.c
@@ -8,7 +8,7 @@ f (void)
 {
   asm volatile ("");
 
-  asm const (""); /* { dg-error {'const' is not an asm qualifier} } */
+  asm const (""); /* { dg-error {'const' is not an 'asm' qualifier} } */
 
-  asm restrict (""); /* { dg-error {'restrict' is not an asm qualifier} } */
+  asm restrict (""); /* { dg-error {'restrict' is not an 'asm' qualifier} } */
 }
diff --git a/gcc/testsuite/gcc.dg/cast-1.c b/gcc/testsuite/gcc.dg/cast-1.c
index 7b12ad9f561..19ed4f4208d 100644
--- a/gcc/testsuite/gcc.dg/cast-1.c
+++ b/gcc/testsuite/gcc.dg/cast-1.c
@@ -24,8 +24,8 @@ f (void)
   (union u) l; /* { dg-error "cast to union type from type not present in union" } */
   (int) sv; /* { dg-error "aggregate value used where an integer was expected" } */
   (int) uv; /* { dg-error "aggregate value used where an integer was expected" } */
-  (float) sv; /* { dg-error "aggregate value used where a float was expected" } */
-  (float) uv; /* { dg-error "aggregate value used where a float was expected" } */
+  (float) sv; /* { dg-error "aggregate value used where a floating point was expected" } */
+  (float) uv; /* { dg-error "aggregate value used where a floating point was expected" } */
   (_Complex double) sv; /* { dg-error "aggregate value used where a complex was expected" } */
   (_Complex double) uv; /* { dg-error "aggregate value used where a complex was expected" } */
   (void *) sv; /* { dg-error "cannot convert to a pointer type" } */
diff --git a/gcc/testsuite/gcc.dg/cast-2.c b/gcc/testsuite/gcc.dg/cast-2.c
index f7f58f8a41c..24f63b2e8d4 100644
--- a/gcc/testsuite/gcc.dg/cast-2.c
+++ b/gcc/testsuite/gcc.dg/cast-2.c
@@ -24,8 +24,8 @@ f (void)
   (union u) l; /* { dg-error "cast to union type from type not present in union" } */
   (int) sv; /* { dg-error "aggregate value used where an integer was expected" } */
   (int) uv; /* { dg-error "aggregate value used where an integer was expected" } */
-  (float) sv; /* { dg-error "aggregate value used where a float was expected" } */
-  (float) uv; /* { dg-error "aggregate value used where a float was expected" } */
+  (float) sv; /* { dg-error "aggregate value used where a floating point was expected" } */
+  (float) uv; /* { dg-error "aggregate value used where a floating point was expected" } */
   (_Complex double) sv; /* { dg-error "aggregate value used where a complex was expected" } */
   (_Complex double) uv; /* { dg-error "aggregate value used where a complex was expected" } */
   (void *) sv; /* { dg-error "cannot convert to a pointer type" } */
diff --git a/gcc/testsuite/gcc.dg/cast-3.c b/gcc/testsuite/gcc.dg/cast-3.c
index 40d3c88c680..d8ae3a0fce2 100644
--- a/gcc/testsuite/gcc.dg/cast-3.c
+++ b/gcc/testsuite/gcc.dg/cast-3.c
@@ -24,8 +24,8 @@ f (void)
   (union u) l; /* { dg-error "cast to union type from type not present in union" } */
   (int) sv; /* { dg-error "aggregate value used where an integer was expected" } */
   (int) uv; /* { dg-error "aggregate value used where an integer was expected" } */
-  (float) sv; /* { dg-error "aggregate value used where a float was expected" } */
-  (float) uv; /* { dg-error "aggregate value used where a float was expected" } */
+  (float) sv; /* { dg-error "aggregate value used where a floating point was expected" } */
+  (float) uv; /* { dg-error "aggregate value used where a floating point was expected" } */
   (_Complex double) sv; /* { dg-error "aggregate value used where a complex was expected" } */
   (_Complex double) uv; /* { dg-error "aggregate value used where a complex was expected" } */
   (void *) sv; /* { dg-error "cannot convert to a pointer type" } */
diff --git a/gcc/testsuite/gcc.dg/cpp/source_date_epoch-2.c b/gcc/testsuite/gcc.dg/cpp/source_date_epoch-2.c
index ae18362ae87..2ca8fa32d3e 100644
--- a/gcc/testsuite/gcc.dg/cpp/source_date_epoch-2.c
+++ b/gcc/testsuite/gcc.dg/cpp/source_date_epoch-2.c
@@ -6,7 +6,7 @@
 int
 main(void)
 {
-  __builtin_printf ("%s %s\n", __DATE__, __TIME__); /* { dg-error "SOURCE_DATE_EPOCH must expand" } */
+  __builtin_printf ("%s %s\n", __DATE__, __TIME__); /* { dg-error "environment variable 'SOURCE_DATE_EPOCH' must expand" } */
   __builtin_printf ("%s %s\n", __DATE__, __TIME__);
   return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/debug/pr85252.c b/gcc/testsuite/gcc.dg/debug/pr85252.c
index 6e5ca85bc86..9bd4d48d618 100644
--- a/gcc/testsuite/gcc.dg/debug/pr85252.c
+++ b/gcc/testsuite/gcc.dg/debug/pr85252.c
@@ -5,7 +5,7 @@ void
 foo (void)
 {
   static char a[0] = "";
-  static char b[0] = "b";	/* { dg-warning "initializer-string for array of chars is too long" } */
+  static char b[0] = "b";	/* { dg-warning "initializer-string for array of 'char' is too long" } */
   static char c[1] = "c";
-  static char d[1] = "de";	/* { dg-warning "initializer-string for array of chars is too long" } */
+  static char d[1] = "de";	/* { dg-warning "initializer-string for array of 'char' is too long" } */
 }
diff --git a/gcc/testsuite/gcc.dg/dfp/cast-bad.c b/gcc/testsuite/gcc.dg/dfp/cast-bad.c
index e9e31ff3067..8d22ba3f8c1 100644
--- a/gcc/testsuite/gcc.dg/dfp/cast-bad.c
+++ b/gcc/testsuite/gcc.dg/dfp/cast-bad.c
@@ -31,10 +31,10 @@ f (void)
   (struct s) d128; /* { dg-error "conversion to non-scalar type requested" } */
   (union u) d128; /* { dg-error "cast to union type from type not present in union" } */
 		
-  (_Decimal32) sv; /* { dg-error "aggregate value used where a float was expected" } */
-  (_Decimal32) uv; /* { dg-error "aggregate value used where a float was expected" } */
-  (_Decimal64) sv; /* { dg-error "aggregate value used where a float was expected" } */
-  (_Decimal64) uv; /* { dg-error "aggregate value used where a float was expected" } */
-  (_Decimal128) sv; /* { dg-error "aggregate value used where a float was expected" } */
-  (_Decimal128) uv; /* { dg-error "aggregate value used where a float was expected" } */
+  (_Decimal32) sv; /* { dg-error "aggregate value used where a floating point was expected" } */
+  (_Decimal32) uv; /* { dg-error "aggregate value used where a floating point was expected" } */
+  (_Decimal64) sv; /* { dg-error "aggregate value used where a floating point was expected" } */
+  (_Decimal64) uv; /* { dg-error "aggregate value used where a floating point was expected" } */
+  (_Decimal128) sv; /* { dg-error "aggregate value used where a floating point was expected" } */
+  (_Decimal128) uv; /* { dg-error "aggregate value used where a floating point was expected" } */
 }
diff --git a/gcc/testsuite/gcc.dg/format/gcc_diag-1.c b/gcc/testsuite/gcc.dg/format/gcc_diag-1.c
index 87614567b91..4a64d5460c6 100644
--- a/gcc/testsuite/gcc.dg/format/gcc_diag-1.c
+++ b/gcc/testsuite/gcc.dg/format/gcc_diag-1.c
@@ -1,7 +1,7 @@
 /* Test for GCC diagnostic formats.  */
 /* Origin: Kaveh Ghazi <ghazi@caip.rutgers.edu> */
 /* { dg-do compile } */
-/* { dg-options "-Wformat" } */
+/* { dg-options "-Wformat -Wno-format-diag" } */
 
 #include "format.h"
 
diff --git a/gcc/testsuite/gcc.dg/format/gcc_diag-11.c b/gcc/testsuite/gcc.dg/format/gcc_diag-11.c
new file mode 100644
index 00000000000..a716c8de7ef
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/format/gcc_diag-11.c
@@ -0,0 +1,382 @@
+/* Test warnings for for GCC diagnostics.
+   { dg-do compile }
+   { dg-options "-Wformat -Wformat-diag" } */
+
+/* Magic identifiers must be set before the attribute is used.  */
+
+typedef long long __gcc_host_wide_int__;
+
+typedef struct location_s
+{
+  const char *file;
+  int line;
+} location_t;
+
+union tree_node;
+typedef union tree_node *tree;
+
+/* Define gimple as a dummy type.  The typedef must be provided for
+   the C test to find the symbol.  */
+typedef struct gimple gimple;
+
+/* Likewise for gimple.  */
+typedef struct cgraph_node cgraph_node;
+
+#define FORMAT(kind) __attribute__ ((format (__gcc_## kind ##__, 1, 2)))
+
+/* Basic formatting function like pp_format.  */
+void diag (const char*, ...) FORMAT (diag);
+
+/* Diagnostic formatting function like error or warning declared
+   by the C front end.  */
+void cdiag (const char*, ...) FORMAT (cdiag);
+
+/* Diagnostic formatting function like error or warning declared
+   by the middle-end or back-end.  */
+void tdiag (const char*, ...) FORMAT (tdiag);
+
+/* Diagnostic formatting function like error or warning declared
+   by the C++ front-end.  */
+void cxxdiag (const char*, ...) FORMAT (cxxdiag);
+
+void dump (const char*, ...) FORMAT (dump_printf);
+
+/* Verify that functions declared with the C/C++ front-end __gcc_cdiag__
+   attribute detect invalid whitespace in format strings.  */
+
+void test_cdiag_whitespace (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  /* Verify that strings of leading spaces don't trigger a warning.  */
+  cdiag (" a");
+  cdiag ("  b");
+  cdiag ("   c");
+  cdiag ("%< %>a");
+  cdiag ("%<  %>a");
+  cdiag ("a b");
+  cdiag ("a  b");           /* { dg-warning "unquoted sequence of 2 consecutive space characters" } */
+  cdiag ("a ");             /* { dg-warning "spurious trailing space character" } */
+  cdiag ("a  ");            /* { dg-warning "spurious trailing space characters" } */
+  cdiag ("a%< %>");
+  cdiag ("a%< %>%< %>");
+  cdiag ("a%< %> ");        /* { dg-warning "spurious trailing space character" } */
+  cdiag ("a%< %>  %< %>");  /* { dg-warning "unquoted sequence of 2 consecutive space characters" } */
+
+  /* It's debatable whether the following two formst strings should
+     be  cdiagnosed.  They aren't only because it's simpler that way.  */
+  cdiag ("a %< %>");
+  cdiag ("a%< %> %< %>");
+
+  /* Exercise other whitespace characters.  */
+  cdiag ("a\fb");           /* { dg-warning "unquoted whitespace character '\\\\x0c'" } */
+  cdiag ("a\nb");           /* { dg-warning "unquoted whitespace character '\\\\x0a'" } */
+  cdiag ("a\rb");           /* { dg-warning "unquoted whitespace character '\\\\x0d'" } */
+  cdiag ("a\vb");           /* { dg-warning "unquoted whitespace character '\\\\x0b'" } */
+
+  cdiag ("First sentence.  And a next.");
+  cdiag ("First sentence.  not capitalized sentence"); /* { dg-warning "inconsistent capitalization" } */
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-diag"
+
+  /* Verify that the warning can be suppressed.  */
+  cdiag ("\ta\b    c\vb\n");
+
+#pragma GCC diagnostic pop
+}
+
+
+void test_cdiag_control (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("\1");             /* { dg-warning "unquoted control character '\\\\x01'" } */
+  cdiag ("a\ab");           /* { dg-warning "unquoted control character '\\\\x07'" } */
+  cdiag ("a\bb");           /* { dg-warning "unquoted control character '\\\\x08'" } */
+}
+
+
+void test_cdiag_punct (tree t, gimple *gc, int i)
+{
+  (void)&t; (void)&gc;
+
+  /* Exercise the period.  */
+  cdiag (".abc");           /* { dg-warning "spurious leading punctuation character" } */
+  cdiag ("abc;");           /* { dg-warning "spurious trailing punctuation character" } */
+  /* Verify that sentences that start with an uppercase letter and end
+     in a period are not diagnosed.  */
+  cdiag ("This is a full sentence.");
+  cdiag ("Capitalized sentence (with a parethetical note).");
+  cdiag ("Not a full sentence;");   /* { dg-warning "spurious trailing punctuation character" } */
+  cdiag ("Neither is this one,");   /* { dg-warning "spurious trailing punctuation character" } */
+
+  /* Exercise the ellipsis.  */
+  cdiag ("this message...");
+  cdiag ("...continues here");
+  cdiag ("but...not here"); /* { dg-warning "unquoted sequence of 3 consecutive punctuation characters" } */
+
+  /* Verify that parenthesized sentences are accepted, even the whole
+     meesage (done in the C++ front end).  */
+  cdiag ("null argument where non-null required (argument %i)", i);
+  cdiag ("null (argument %i) where non-null required", i);
+  cdiag ("(see what comes next)");
+
+  /* Verify that only a single trailing colon is accepted.  */
+  cdiag ("candidates are:");
+  cdiag ("candidates are::"); /* { dg-warning "spurious trailing punctuation characters" } */
+
+  /* Exercise C++.  */
+  cdiag ("C++ is cool");
+  cdiag ("this is c++");
+  cdiag ("you can do this in C++ but not in C");
+
+  /* Also verify that G++ is accepted.  */
+  cdiag ("G++ rocks");
+  cdiag ("this is accepted by g++");
+  cdiag ("valid in G++ (or g++) but not in gcc");
+
+  /* Exercise parenthetical note followed by a colon, semicolon,
+     or a comma.  */
+  cdiag ("found a bug (here):");
+  cdiag ("because of another bug (over there); fix it");
+
+  cdiag ("found foo (123): go look at it");
+  cdiag ("missed bar (abc); will try harder next time");
+
+  cdiag ("expected this (or that), got something else (or who knows what)");
+
+  /* Exercise parenthetical note with a question mark.  */
+  cdiag ("hmmm (did you really mean that?)");
+  cdiag ("error (did you mean %<foo()%>?)");
+  /* And a question mark after a parenthetical note.  */
+  cdiag ("did you mean this (or that)?");
+
+  /* But make sure unbalanced parenthese are diagnosed.  */
+  cdiag ("or this or the other)?");   /* { dg-warning "unbalanced punctuation character '\\\)'" } */
+
+  cdiag ("## Heading");               /* { dg-warning "spurious leading punctuation characters '##'" } */
+  cdiag ("## %s ##", "1");            /* { dg-warning "spurious (leading|trailing) punctuation characters '##'" } */
+
+  cdiag ("#1 priority");              /* { dg-warning "spurious leading punctuation character '#'" } */
+  cdiag ("priority #2");
+
+  /* Quoting.  */
+  cdiag ("\"quoted\"");
+  cdiag ("\"quoted\" string");
+  cdiag ("this is a \"string in quotes\"");
+  cdiag ("\"missing closing quote");  /* { dg-warning "unterminated quote character '\"'" } */
+
+  /* PR translation/90121 - punctuation character after a space.  */
+  cdiag ("bad version : 1");          /* { dg-warning "space followed by punctuation character ':'" } */
+  cdiag ("problem ; fix it");         /* { dg-warning "space followed by punctuation character ';'" } */
+  cdiag ("End . not.");               /* { dg-warning "space followed by punctuation character '.'" } */
+  cdiag ("it is bad , very bad");     /* { dg-warning "space followed by punctuation character ','" } */
+  cdiag ("say what ?");               /* { dg-warning "space followed by punctuation character '?'" } */
+  /* But these are okay after a space.  */
+  cdiag ("1 / 2");
+  cdiag ("2 + 3");
+  cdiag ("2 + 3");
+}
+
+void test_cdiag_punct_balance (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("f()");            /* { dg-warning "spurious trailing punctuation characters" } */
+  cdiag ("g(1)");
+  cdiag ("(");              /* { dg-warning "spurious leading punctuation character|unbalanced" } */
+  cdiag ("()");             /* { dg-warning "spurious leading punctuation characters" } */
+  cdiag (")");              /* { dg-warning "unbalanced punctuation character '\\\)'" } */
+  cdiag ("f()g");           /* { dg-warning "unquoted sequence of 2 consecutive punctuation characters" } */
+  cdiag ("illegal operand (1)");
+}
+
+
+void test_cdiag_nongraph (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("a\376b");         /* { dg-warning "unquoted non-graph character '\\\\xfe'" } */
+  cdiag ("a\377b");         /* { dg-warning "unquoted non-graph character '\\\\xff'" } */
+}
+
+
+void test_cdiag_attribute (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("attribute foo");
+  cdiag ("this is attribute bar");
+  cdiag ("bad __attribute bar");        /* { dg-warning "unquoted attribute" } */
+  cdiag ("__attribute__ (foobar) bad"); /* { dg-warning "unquoted attribute" } */
+  cdiag ("__attribute__ ((foobar))");   /* { dg-warning "unquoted attribute" } */
+  cdiag ("__attribute__ (xxx))");       /* { dg-warning "unquoted attribute" } */
+  /* { dg-warning "unbalanced punctuation character '\\\)'" "xxx" { target *-*-* } .-1 } */
+  cdiag ("__attribute__ ((yyy)))");     /* { dg-warning "unquoted attribute" } */
+  /* { dg-warning "unbalanced punctuation character '\\\)'" "yyy" { target *-*-* } .-1 } */
+  cdiag ("__attribute__ ((zzz)");       /* { dg-warning "unquoted attribute" } */
+  /* { dg-warning "unbalanced punctuation character '\\\('" "zzz" { target *-*-* } .-1 } */
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-diag"
+
+  /* Verify that the warning can be suppressed.  */
+  cdiag ("__attribute__ (((");
+
+#pragma GCC diagnostic pop
+}
+
+void test_cdiag_builtin (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("__builtin_abort");    /* { dg-warning "unquoted name of built-in function '__builtin_abort'" } */
+  cdiag ("in __builtin_trap");  /* { dg-warning "unquoted name of built-in function '__builtin_trap'" } */
+  cdiag ("__builtin_xyz bites");/* { dg-warning "unquoted name of built-in function '__builtin_xyz'" } */
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-diag"
+
+  /* Verify that the warning can be suppressed.  */
+  cdiag ("__builtin____with____lots__of__underscores");
+
+#pragma GCC diagnostic pop
+}
+
+
+void test_cdiag_option (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("%<-Wall%>");
+  cdiag ("use option %<-Wextra%> to enable additinal warnings");
+
+  cdiag ("-O2 is fast");        /* { dg-warning "unquoted option name '-O2'" } */
+  cdiag ("but -O3 is faster");  /* { dg-warning "unquoted option name '-O3'" } */
+
+  cdiag ("get --help");         /* { dg-warning "unquoted option name '--help'" } */
+  cdiag ("enable -m32");        /* { dg-warning "unquoted option name '-m32'" } */
+  cdiag ("value is -12");
+  cdiag ("foo-O2");
+  cdiag ("a-W");
+}
+
+
+void test_cdiag_keyword (tree t, gimple *gc)
+{
+  cdiag ("malignofer or alignofus");
+  cdiag ("use alignof");        /* { dg-warning "unquoted keyword 'alignof'" } */
+  cdiag ("or _Alignof");        /* { dg-warning " keyword '_Alignof'" } */
+  cdiag ("_Pragma too");        /* { dg-warning " keyword '_Pragma'" } */
+
+  cdiag ("a #error directive"); /* { dg-warning "unquoted preprocessing directive '#error'" } */
+  cdiag ("#include file");      /* { dg-warning "unquoted preprocessing directive '#include'" } */
+  cdiag ("but #pragma foobar"); /* { dg-warning "unquoted preprocessing directive '#pragma'" } */
+  cdiag ("pragma foobar is okay");
+  cdiag ("or even # pragma is fine");
+
+  cdiag ("an offsetof here");   /* { dg-warning "unquoted keyword 'offsetof" } */
+  cdiag ("sizeof x");           /* { dg-warning "unquoted keyword 'sizeof" } */
+  cdiag ("have typeof");        /* { dg-warning "unquoted keyword 'typeof" } */
+}
+
+
+void test_cdiag_operator (tree t, gimple *gc)
+{
+  cdiag ("a == b");             /* { dg-warning "unquoted operator '=='" } */
+  cdiag ("++a");                /* { dg-warning "unquoted operator '\\\+\\\+'" } */
+  cdiag ("b--");                /* { dg-warning "unquoted operator '--'" } */
+}
+
+
+void test_cdiag_type_name (tree t, gimple *gc)
+{
+  cdiag ("the word character should not be quoted");
+  cdiag ("but char should be"); /* { dg-warning "unquoted keyword 'char'" } */
+
+  cdiag ("unsigned char should be quoted");     /* { dg-warning "unquoted type name 'unsigned char'" } */
+  cdiag ("but unsigned character is fine");
+
+  cdiag ("as should int");      /* { dg-warning "unquoted keyword 'int'" } */
+  cdiag ("and signed int");     /* { dg-warning "unquoted type name 'signed int'" } */
+  cdiag ("and also unsigned int");     /* { dg-warning "unquoted type name 'unsigned int'" } */
+  cdiag ("very long thing");
+  cdiag ("use long long here"); /* { dg-warning "unquoted type name 'long long'" } */
+
+  cdiag ("have a floating type");
+  cdiag ("found float type");   /* { dg-warning "unquoted keyword 'float'" } */
+
+  cdiag ("break rules");
+  cdiag ("if we continue by default for a short while else do nothing");
+  cdiag ("register a function for unsigned extern to void const reads");
+  cdiag ("or volatile access");
+}
+
+
+void test_cdiag_identifier (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("private _x ident");   /* { dg-warning "unquoted identifier or keyword '_x'" } */
+  cdiag ("and another __y");    /* { dg-warning "unquoted identifier or keyword '__y'" } */
+  cdiag ("ident z_ with trailing underscore");   /* { dg-warning "unquoted identifier or keyword 'z_'" } */
+  cdiag ("v_ variable");        /* { dg-warning "unquoted identifier or keyword 'v_'" } */
+  cdiag ("call foo_bar");       /* { dg-warning "unquoted identifier or keyword 'foo_bar'" } */
+  cdiag ("unqoted x_y ident");  /* { dg-warning "unquoted identifier or keyword 'x_y'" } */
+
+  cdiag ("size_t type");        /* { dg-warning "unquoted identifier or keyword 'size_t'" } */
+  cdiag ("bigger than INT_MAX");/* { dg-warning "unquoted identifier or keyword 'INT_MAX'" } */
+
+  cdiag ("quoted ident %<a_b%>");
+  cdiag ("another quoted identifier %<x_%> here");
+}
+
+
+void test_cdiag_bad_words (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("arn't you dumb?");   /* { dg-warning "bare apostrophe ''' in format" } */
+  cdiag ("you can't do that"); /* { dg-warning "contraction 'can't' in format" } */
+  cdiag ("you can%'t do that");/* { dg-warning "contraction 'can%'t' in format" "FIXME" { xfail *-*-* } } */
+  cdiag ("it mustn't be");     /* { dg-warning "contraction 'mustn't' in format" } */
+  cdiag ("isn't that silly?"); /* { dg-warning "bare apostrophe ''' in format" } */
+
+  cdiag ("can not do this");   /* { dg-warning "'can not' is not a word; use 'cannot' instead" } */
+  cdiag ("you can not");       /* { dg-warning "'can not' is not a word; use 'cannot' instead" } */
+
+  /* See PR target/90157 - aarch64: unnecessary abbreviation in diagnostic */
+  cdiag ("arg 1");             /* { dg-warning "'arg' is not a word; use 'argument' instead" } */
+  cdiag ("bad arg");           /* { dg-warning "'arg' is not a word; use 'argument' instead" } */
+  cdiag ("two args");          /* { dg-warning "'args' is not a word; use 'arguments' instead" } */
+  cdiag ("args 1 and 2");      /* { dg-warning "'args' is not a word; use 'arguments' instead" } */
+
+  cdiag ("reg A");             /* { dg-warning "'reg' is not a word; use 'register' instead" } */
+  cdiag ("regs A and B");      /* { dg-warning "'regs' is not a word; use 'registers' instead" } */
+  cdiag ("no regs");           /* { dg-warning "'regs' is not a word; use 'registers' instead" } */
+}
+
+
+void test_cdiag_directive (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cxxdiag ("%<%s%>", "");     /* { dg-warning "quoted '%s' directive in format" } */
+  /* This was asked to be diagnosed in PR #90158 but there, the \"%s\"
+     is in parenheses which ends up getting diagnosed because of
+     the two consecutive punctuation characters, ( and ".  */
+  cdiag ("\"%s\"", "");       /* { dg-warning "quoted '%s' directive in format" } */
+
+  /* Make sure quoted paired tokens are not diagnosed.  */
+  cdiag ("%<'%>");
+  cdiag ("%<\"%>");
+  cdiag ("%<<%>");
+  cdiag ("%<>%>");
+  cdiag ("%<(%>");
+  cdiag ("%<)%>");
+  cdiag ("%<[%>");
+  cdiag ("%<]%>");
+
+  cdiag ("%<'%> %<\"%> %<>%> %<<%> %<)%> %<(%> %<]%> %<[%>");
+}
diff --git a/gcc/testsuite/gcc.dg/gcc_diag-11.c b/gcc/testsuite/gcc.dg/gcc_diag-11.c
new file mode 100644
index 00000000000..c359989f481
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/gcc_diag-11.c
@@ -0,0 +1,220 @@
+/* Test warnings for for GCC diagnostics.
+   { dg-do compile }
+   { dg-options "-Wformat -Wformat-diag" } */
+
+/* Magic identifiers must be set before the attribute is used.  */
+
+typedef long long __gcc_host_wide_int__;
+
+typedef struct location_s
+{
+  const char *file;
+  int line;
+} location_t;
+
+union tree_node;
+typedef union tree_node *tree;
+
+/* Define gimple as a dummy type.  The typedef must be provided for
+   the C test to find the symbol.  */
+typedef struct gimple gimple;
+
+/* Likewise for gimple.  */
+typedef struct cgraph_node cgraph_node;
+
+#define FORMAT(kind) __attribute__ ((format (__gcc_## kind ##__, 1, 2)))
+
+/* Basic formatting function like pp_format.  */
+void diag (const char*, ...) FORMAT (diag);
+
+/* Diagnostic formatting function like error or warning declared
+   by the C front end.  */
+void cdiag (const char*, ...) FORMAT (cdiag);
+
+/* Diagnostic formatting function like error or warning declared
+   by the middle-end or back-end.  */
+void tdiag (const char*, ...) FORMAT (tdiag);
+
+/* Diagnostic formatting function like error or warning declared
+   by the C++ front-end.  */
+void cxxdiag (const char*, ...) FORMAT (cxxdiag);
+
+void dump (const char*, ...) FORMAT (dump_printf);
+
+/* Verify that functions declared with the C/C++ front-end __gcc_cdiag__
+   attribute detect invalid whitespace in format strings.  */
+
+void test_cdiag_whitespace (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag (" a");             /* { dg-warning "spurious leading space character in format" } */
+  cdiag ("%< %>a");
+  cdiag ("%<  %>a");
+  cdiag ("a b");
+  cdiag ("a  b");           /* { dg-warning "unquoted sequence of 2 consecutive space characters" } */
+  cdiag ("a ");             /* { dg-warning "spurious trailing space character" } */
+  cdiag ("a  ");            /* { dg-warning "spurious trailing space characters" } */
+  cdiag ("a%< %>");
+  cdiag ("a%< %>%< %>");
+  cdiag ("a%< %> ");        /* { dg-warning "spurious trailing space character" } */
+  cdiag ("a%< %>  %< %>");  /* { dg-warning "unquoted sequence of 2 consecutive space characters" } */
+
+  /* It's debatable whether the following two formst strings should
+     be  cdiagnosed.  They aren't only because it's simpler that way.  */
+  cdiag ("a %< %>");
+  cdiag ("a%< %> %< %>");
+
+  /* Exercise other whitespace characters.  */
+  cdiag ("a\fb");           /* { dg-warning "unquoted whitespace character '\\\\x0c'" } */
+  cdiag ("a\nb");           /* { dg-warning "unquoted whitespace character '\\\\x0a'" } */
+  cdiag ("a\rb");           /* { dg-warning "unquoted whitespace character '\\\\x0d'" } */
+  cdiag ("a\vb");           /* { dg-warning "unquoted whitespace character '\\\\x0b'" } */
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-diag"
+
+  /* Verify that the warning can be suppressed.  */
+  cdiag ("\ta\b    c\vb\n");
+
+#pragma GCC diagnostic pop
+}
+
+
+void test_cdiag_control (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("\1");             /* { dg-warning "unquoted control character '\\\\x01'" } */
+  cdiag ("a\ab");           /* { dg-warning "unquoted control character '\\\\x07'" } */
+  cdiag ("a\bb");           /* { dg-warning "unquoted control character '\\\\x08'" } */
+}
+
+
+void test_cdiag_punct (tree t, gimple *gc, int i)
+{
+  (void)&t; (void)&gc;
+
+  /* Exercise the period.  */
+  cdiag (".abc");           /* { dg-warning "spurious leading punctuation character" } */
+  cdiag ("abc;");           /* { dg-warning "spurious trailing punctuation character" } */
+  /* Verify that sentences that start with an uppercase letter and end
+     in a period are not diagnosed.  */
+  cdiag ("This is a full sentence.");
+  cdiag ("Capitalized sentence (with a parethetical note).");
+  cdiag ("Not a full sentence;");   /* { dg-warning "spurious trailing punctuation character" } */
+  cdiag ("Neither is this one,");   /* { dg-warning "spurious trailing punctuation character" } */
+
+  /* Exercise the ellipsis.  */
+  cdiag ("this message...");
+  cdiag ("...continues here");
+  cdiag ("but...not here"); /* { dg-warning "unquoted sequence of 3 consecutive punctuation characters" } */
+
+  /* Exercise parentheses.  */
+  cdiag ("null argument where non-null required (argument %i)", i);
+
+  /* Exercise C++.  */
+  cdiag ("C++ is cool");
+  cdiag ("this is c++");
+  cdiag ("you can do this in C++ but not in C");
+
+  /* Exercise parenthetical note followed by a colon, semicolon,
+     or a comma.  */
+  cdiag ("found a bug (here):");
+  cdiag ("because of another bug (over there); fix it");
+
+  cdiag ("found foo (123): go look at it");
+  cdiag ("missed bar (abc); will try harder next time");
+
+  cdiag ("expected this (or that), got something else (or who knows what)");
+}
+
+
+void test_cdiag_punct_balance (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("f()");            /* { dg-warning "spurious trailing punctuation characters" } */
+  cdiag ("g(1)");
+  cdiag ("(");              /* { dg-warning "spurious leading punctuation character|unbalanced" } */
+  cdiag ("()");             /* { dg-warning "spurious leading punctuation characters" } */
+  cdiag (")");              /* { dg-warning "unbalanced punctuation character '\\\)'" } */
+  cdiag ("f()g");           /* { dg-warning "unquoted sequence of 2 consecutive punctuation characters" } */
+  cdiag ("illegal operand (1)");
+}
+
+
+void test_cdiag_nongraph (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("a\376b");         /* { dg-warning "unquoted non-graph character '\\\\xfe'" } */
+  cdiag ("a\377b");         /* { dg-warning "unquoted non-graph character '\\\\xff'" } */
+}
+
+
+void test_cdiag_attribute (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("attribute foo");
+  cdiag ("this is attribute bar");
+  cdiag ("bad __attribute bar");        /* { dg-warning "unquoted attribute" } */
+  cdiag ("__attribute__ (foobar) bad"); /* { dg-warning "unquoted attribute" } */
+  cdiag ("__attribute__ ((foobar))");   /* { dg-warning "unquoted attribute" } */
+  cdiag ("__attribute__ (xxx))");       /* { dg-warning "unquoted attribute" } */
+  /* { dg-warning "unbalanced punctuation character '\\\)'" "xxx" { target *-*-* } .-1 } */
+  cdiag ("__attribute__ ((yyy)))");     /* { dg-warning "unquoted attribute" } */
+  /* { dg-warning "unbalanced punctuation character '\\\)'" "yyy" { target *-*-* } .-1 } */
+  cdiag ("__attribute__ ((zzz)");       /* { dg-warning "unquoted attribute" } */
+  /* { dg-warning "unbalanced punctuation character '\\\('" "zzz" { target *-*-* } .-1 } */
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-diag"
+
+  /* Verify that the warning can be suppressed.  */
+  cdiag ("__attribute__ (((");
+
+#pragma GCC diagnostic pop
+}
+
+void test_cdiag_builtin (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("__builtin_abort");    /* { dg-warning "unquoted name of built-in function '__builtin_abort'" } */
+  cdiag ("in __builtin_trap");  /* { dg-warning "unquoted name of built-in function '__builtin_trap'" } */
+  cdiag ("__builtin_xyz bites");/* { dg-warning "unquoted name of built-in function '__builtin_xyz'" } */
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-diag"
+
+  /* Verify that the warning can be suppressed.  */
+  cdiag ("__builtin____with____lots__of__underscores");
+
+#pragma GCC diagnostic pop
+}
+
+void test_cdiag_option (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("%<-Wall%>");
+  cdiag ("use option %<-Wextra%> to enable additinal warnings");
+
+  cdiag ("-O2 is fast");       /* { dg-warning "unquoted option name '-O2'" } */
+  cdiag ("but -O3 is faster"); /* { dg-warning "unquoted option name '-O3'" } */
+
+  cdiag ("get --help");        /* { dg-warning "unquoted option name '--help'" } */
+  cdiag ("enable -m32");       /* { dg-warning "unquoted option name '-m32'" } */
+  cdiag ("value is -12");
+  cdiag ("foo-O2");
+  cdiag ("a-W");
+}
+
+void test_cdiag_oper (tree t, gimple *gc)
+{
+  cdiag ("a == b");            /* { dg-warning "unquoted operator '=='" } */
+  cdiag ("++a");               /* { dg-warning "unquoted operator '\\\+\\\+'" } */
+  cdiag ("b--");               /* { dg-warning "unquoted operator '--'" } */
+}
diff --git a/gcc/testsuite/gcc.dg/gnu-cond-expr-2.c b/gcc/testsuite/gcc.dg/gnu-cond-expr-2.c
index 2e561e4b1de..fed5adf15b7 100644
--- a/gcc/testsuite/gcc.dg/gnu-cond-expr-2.c
+++ b/gcc/testsuite/gcc.dg/gnu-cond-expr-2.c
@@ -9,5 +9,5 @@ int a, b, c;
 void
 f (void)
 {
-  c = (++a ? : b); /* { dg-warning "ISO C forbids omitting the middle term of a \\?: expression" } */
+  c = (++a ? : b); /* { dg-warning "ISO C forbids omitting the middle term of a '\\?:' expression" } */
 }
diff --git a/gcc/testsuite/gcc.dg/gnu-cond-expr-3.c b/gcc/testsuite/gcc.dg/gnu-cond-expr-3.c
index 90555ad63f5..08657ff737e 100644
--- a/gcc/testsuite/gcc.dg/gnu-cond-expr-3.c
+++ b/gcc/testsuite/gcc.dg/gnu-cond-expr-3.c
@@ -9,5 +9,5 @@ int a, b, c;
 void
 f (void)
 {
-  c = (++a ? : b); /* { dg-error "ISO C forbids omitting the middle term of a \\?: expression" } */
+  c = (++a ? : b); /* { dg-error "ISO C forbids omitting the middle term of a '\\?:' expression" } */
 }
diff --git a/gcc/testsuite/gcc.dg/gomp/macro-4.c b/gcc/testsuite/gcc.dg/gomp/macro-4.c
index 28d198b1ce3..a4ed9a3980a 100644
--- a/gcc/testsuite/gcc.dg/gomp/macro-4.c
+++ b/gcc/testsuite/gcc.dg/gomp/macro-4.c
@@ -10,9 +10,9 @@ void bar (void);
 void
 foo (void)
 {
-#pragma omp p		/* { dg-warning "-:ignoring #pragma omp _Pragma" } */
+#pragma omp p		/* { dg-warning "-:ignoring '#pragma omp _Pragma'" } */
     bar ();
-  omp_p			/* { dg-warning "-:ignoring #pragma omp _Pragma" } */
+  omp_p			/* { dg-warning "-:ignoring '#pragma omp _Pragma'" } */
     bar ();
 }
 
@@ -22,8 +22,8 @@ foo (void)
 void
 baz (void)
 {
-#pragma omp parallel	/* { dg-warning "-:ignoring #pragma omp serial" } */
+#pragma omp parallel	/* { dg-warning "-:ignoring '#pragma omp serial'" } */
     bar ();
-  omp_parallel		/* { dg-warning "-:ignoring #pragma omp serial" } */
+  omp_parallel		/* { dg-warning "-:ignoring '#pragma omp serial'" } */
     bar ();
 }
diff --git a/gcc/testsuite/gcc.dg/init-bad-1.c b/gcc/testsuite/gcc.dg/init-bad-1.c
index a7e8c5a80a2..61734045f2b 100644
--- a/gcc/testsuite/gcc.dg/init-bad-1.c
+++ b/gcc/testsuite/gcc.dg/init-bad-1.c
@@ -16,9 +16,9 @@ void h(a)
 
 char s[1] = "x";
 char s1[1] = { "x" };
-char t[1] = "xy"; /* { dg-warning "initializer-string for array of chars is too long" } */
-char t1[1] = { "xy" }; /* { dg-warning "initializer-string for array of chars is too long" } */
-char u[1] = { "x", "x" }; /* { dg-error "excess elements in char array initializer" } */
+char t[1] = "xy"; /* { dg-warning "initializer-string for array of 'char' is too long" } */
+char t1[1] = { "xy" }; /* { dg-warning "initializer-string for array of 'char' is too long" } */
+char u[1] = { "x", "x" }; /* { dg-error "excess elements in 'char' array initializer" } */
 /* { dg-message "near init" "near" { target *-*-* } .-1 } */
 
 int i = { }; /* { dg-error "empty scalar initializer" } */
diff --git a/gcc/testsuite/gcc.dg/init-bad-2.c b/gcc/testsuite/gcc.dg/init-bad-2.c
index dad57b92baa..4775c4807bb 100644
--- a/gcc/testsuite/gcc.dg/init-bad-2.c
+++ b/gcc/testsuite/gcc.dg/init-bad-2.c
@@ -17,9 +17,9 @@ void h(a)
 
 char s[1] = "x";
 char s1[1] = { "x" };
-char t[1] = "xy"; /* { dg-warning "initializer-string for array of chars is too long" } */
-char t1[1] = { "xy" }; /* { dg-warning "initializer-string for array of chars is too long" } */
-char u[1] = { "x", "x" }; /* { dg-error "excess elements in char array initializer" } */
+char t[1] = "xy"; /* { dg-warning "initializer-string for array of 'char' is too long" } */
+char t1[1] = { "xy" }; /* { dg-warning "initializer-string for array of 'char' is too long" } */
+char u[1] = { "x", "x" }; /* { dg-error "excess elements in 'char' array initializer" } */
 /* { dg-message "near init" "near" { target *-*-* } .-1 } */
 
 int j = { 1 };
diff --git a/gcc/testsuite/gcc.dg/init-bad-3.c b/gcc/testsuite/gcc.dg/init-bad-3.c
index d320e0e399f..c5c338d9a85 100644
--- a/gcc/testsuite/gcc.dg/init-bad-3.c
+++ b/gcc/testsuite/gcc.dg/init-bad-3.c
@@ -17,9 +17,9 @@ void h(a)
 
 char s[1] = "x";
 char s1[1] = { "x" };
-char t[1] = "xy"; /* { dg-error "initializer-string for array of chars is too long" } */
-char t1[1] = { "xy" }; /* { dg-error "initializer-string for array of chars is too long" } */
-char u[1] = { "x", "x" }; /* { dg-error "excess elements in char array initializer" } */
+char t[1] = "xy"; /* { dg-error "initializer-string for array of 'char' is too long" } */
+char t1[1] = { "xy" }; /* { dg-error "initializer-string for array of 'char' is too long" } */
+char u[1] = { "x", "x" }; /* { dg-error "excess elements in 'char' array initializer" } */
 /* { dg-message "near init" "near" { target *-*-* } .-1 } */
 
 int j = { 1 };
diff --git a/gcc/testsuite/gcc.dg/pr27528.c b/gcc/testsuite/gcc.dg/pr27528.c
index c9bb238e96b..d63238eab07 100644
--- a/gcc/testsuite/gcc.dg/pr27528.c
+++ b/gcc/testsuite/gcc.dg/pr27528.c
@@ -7,16 +7,16 @@ void
 foo (int *x, int y)
 {
   int constant = 0;
-  asm ("# %0" :: "i" (x)); /* { dg-warning "probably doesn't match" } */
+  asm ("# %0" :: "i" (x)); /* { dg-warning "probably does not match" } */
   /* { dg-error "impossible constraint" "" { target *-*-* } .-1 } */
 
-  asm ("# %0" :: "i" (bar (*x))); /* { dg-warning "probably doesn't match" } */
+  asm ("# %0" :: "i" (bar (*x))); /* { dg-warning "probably does not match" } */
   /* { dg-error "impossible constraint" "" { target *-*-* } .-1 } */
 
-  asm ("# %0" :: "i" (*x + 0x11)); /* { dg-warning "probably doesn't match" } */
+  asm ("# %0" :: "i" (*x + 0x11)); /* { dg-warning "probably does not match" } */
   /* { dg-error "impossible constraint" "" { target *-*-* } .-1 } */
 
-  asm ("# %0" :: "i" (constant)); /* { dg-warning "probably doesn't match" } */
+  asm ("# %0" :: "i" (constant)); /* { dg-warning "probably does not match" } */
   /* { dg-error "impossible constraint" "" { target *-*-* } .-1 } */
 
   asm ("# %0" :: "i" (y * 0)); /* folded */
diff --git a/gcc/testsuite/gcc.dg/pr48552-1.c b/gcc/testsuite/gcc.dg/pr48552-1.c
index 6626a58ea48..70d3483d80c 100644
--- a/gcc/testsuite/gcc.dg/pr48552-1.c
+++ b/gcc/testsuite/gcc.dg/pr48552-1.c
@@ -15,7 +15,7 @@ f2 (void *x)
 {
   __asm volatile ("" : "=r" (*x));	/* { dg-warning "dereferencing" "deref" } */
 }					/* { dg-error "invalid use of void expression" "void expr" { target *-*-* } .-1 } */
-					/* { dg-error "invalid lvalue in asm output 0" "invalid lvalue" { target *-*-* } .-2 } */
+					/* { dg-error "invalid lvalue in 'asm' output 0" "invalid lvalue" { target *-*-* } .-2 } */
 void
 f3 (void *x)
 {
@@ -39,7 +39,7 @@ f6 (void *x)
 {
   __asm volatile ("" : "=g" (*x));	/* { dg-warning "dereferencing" "deref" } */
 }					/* { dg-error "invalid use of void expression" "void expr" { target *-*-* } .-1 } */
-					/* { dg-error "invalid lvalue in asm output 0" "invalid lvalue" { target *-*-* } .-2 } */
+					/* { dg-error "invalid lvalue in 'asm' output 0" "invalid lvalue" { target *-*-* } .-2 } */
 void
 f7 (struct S *x)
 {
@@ -49,5 +49,5 @@ f7 (struct S *x)
 void
 f8 (struct S *x)
 {
-  __asm volatile ("" : "=r" (*x));	/* { dg-error "invalid lvalue in asm output 0" } */
+  __asm volatile ("" : "=r" (*x));	/* { dg-error "invalid lvalue in 'asm' output 0" } */
 }
diff --git a/gcc/testsuite/gcc.dg/pr48552-2.c b/gcc/testsuite/gcc.dg/pr48552-2.c
index c3aca89645c..ce6bece3f96 100644
--- a/gcc/testsuite/gcc.dg/pr48552-2.c
+++ b/gcc/testsuite/gcc.dg/pr48552-2.c
@@ -15,7 +15,7 @@ f2 (void *x)
 {
   __asm ("" : "=r" (*x));	/* { dg-warning "dereferencing" "deref" } */
 }				/* { dg-error "invalid use of void expression" "void expr" { target *-*-* } .-1 } */
-				/* { dg-error "invalid lvalue in asm output 0" "invalid lvalue" { target *-*-* } .-2 } */
+				/* { dg-error "invalid lvalue in 'asm' output 0" "invalid lvalue" { target *-*-* } .-2 } */
 void
 f3 (void *x)
 {
@@ -39,7 +39,7 @@ f6 (void *x)
 {
   __asm ("" : "=g" (*x));	/* { dg-warning "dereferencing" "deref" } */
 }				/* { dg-error "invalid use of void expression" "void expr" { target *-*-* } .-1 } */
-				/* { dg-error "invalid lvalue in asm output 0" "invalid lvalue" { target *-*-* } .-2 } */
+				/* { dg-error "invalid lvalue in 'asm' output 0" "invalid lvalue" { target *-*-* } .-2 } */
 void
 f7 (struct S *x)
 {
@@ -49,5 +49,5 @@ f7 (struct S *x)
 void
 f8 (struct S *x)
 {
-  __asm ("" : "=r" (*x));	/* { dg-error "invalid lvalue in asm output 0" } */
+  __asm ("" : "=r" (*x));	/* { dg-error "invalid lvalue in 'asm' output 0" } */
 }
diff --git a/gcc/testsuite/gcc.dg/pr59846.c b/gcc/testsuite/gcc.dg/pr59846.c
index b3dd0de9ea6..9b01b22631c 100644
--- a/gcc/testsuite/gcc.dg/pr59846.c
+++ b/gcc/testsuite/gcc.dg/pr59846.c
@@ -17,13 +17,13 @@ fn2 (unsigned int p)
 _Bool
 fn3 (unsigned int p)
 {
-  return p >= 0U; /* { dg-warning "12:comparison of unsigned expression >= 0 is always true" } */
+  return p >= 0U; /* { dg-warning "12:comparison of unsigned expression in '>= 0' is always true" } */
 }
 
 _Bool
 fn4 (unsigned int p)
 {
-  return p < 0U; /* { dg-warning "12:comparison of unsigned expression < 0 is always false" } */
+  return p < 0U; /* { dg-warning "12:comparison of unsigned expression in '< 0' is always false" } */
 }
 
 _Bool
diff --git a/gcc/testsuite/gcc.dg/pr61096-1.c b/gcc/testsuite/gcc.dg/pr61096-1.c
index 111585dd025..e707904c087 100644
--- a/gcc/testsuite/gcc.dg/pr61096-1.c
+++ b/gcc/testsuite/gcc.dg/pr61096-1.c
@@ -47,7 +47,7 @@ __extension__ int a15[10] = {[2 ... 1] = 4 }; /* { dg-error "31:empty index rang
 __extension__ int a16[10] = {[2 ... 100] = 4 }; /* { dg-error "31:array index range in initializer exceeds array bounds" } */
 int a17[] = { .B = 1 }; /* { dg-error "15:field name not in record or union initializer" } */
 int a18[] = { e }; /* { dg-error "15:initializer element is not constant" } */
-char a19[1] = { "x", "x" }; /* { dg-error "22:excess elements in char array initializer" } */
+char a19[1] = { "x", "x" }; /* { dg-error "22:excess elements in 'char' array initializer" } */
 
 void
 bar (void)
diff --git a/gcc/testsuite/gcc.dg/pr8788-1.c b/gcc/testsuite/gcc.dg/pr8788-1.c
index b05f533dc0f..2281a02f17a 100644
--- a/gcc/testsuite/gcc.dg/pr8788-1.c
+++ b/gcc/testsuite/gcc.dg/pr8788-1.c
@@ -12,7 +12,7 @@ typedef struct {
 
 void switch_to_stack (my_stack *stack){
     asm (  /* { dg-error "impossible constraint" } */
-/* { dg-warning "asm operand 1" "asm operand 1" { target *-*-* } .-1 } */
+/* { dg-warning "'asm' operand 1" "asm operand 1" { target *-*-* } .-1 } */
         "\n"
         : "+r" (stack->regs)
     );
diff --git a/gcc/testsuite/gcc.dg/pr90082.c b/gcc/testsuite/gcc.dg/pr90082.c
index bb8293fb633..663a171821b 100644
--- a/gcc/testsuite/gcc.dg/pr90082.c
+++ b/gcc/testsuite/gcc.dg/pr90082.c
@@ -9,5 +9,5 @@ foo (int a)
 {
   if (__builtin_setjmp (buf) == 0)
     __asm__ ("" : : "n" (a * 2));	/* { dg-error "impossible constraint in 'asm'" } */
-					/* { dg-warning "asm operand 0 probably doesn't match constraints" "" { target *-*-* } .-1 } */
+					/* { dg-warning "'asm' operand 0 probably does not match constraints" "" { target *-*-* } .-1 } */
 }
diff --git a/gcc/testsuite/gcc.dg/simd-2.c b/gcc/testsuite/gcc.dg/simd-2.c
index 13e1caba6cb..e5462390eff 100644
--- a/gcc/testsuite/gcc.dg/simd-2.c
+++ b/gcc/testsuite/gcc.dg/simd-2.c
@@ -33,10 +33,10 @@ hanneke ()
   foo = a; /* { dg-error "incompatible types when assigning" } */
 
   /* Casted assignment between scalar and SIMD of same size.  */
-  foo = (typeof (foo)) foo2; /* { dg-error "aggregate value used where a float was expected" } */
+  foo = (typeof (foo)) foo2; /* { dg-error "aggregate value used where a floating point was expected" } */
 
   /* Casted assignment between scalar and SIMD of different size.  */
-  foo1 = (typeof (foo1)) foo2; /* { dg-error "aggregate value used where a float was expected" } */
+  foo1 = (typeof (foo1)) foo2; /* { dg-error "aggregate value used where a floating point was expected" } */
 
   /* Operators on compatible SIMD types.  */
   a += b + b;
diff --git a/gcc/testsuite/gcc.dg/spellcheck-params-2.c b/gcc/testsuite/gcc.dg/spellcheck-params-2.c
index 27e293ffa60..8187de43481 100644
--- a/gcc/testsuite/gcc.dg/spellcheck-params-2.c
+++ b/gcc/testsuite/gcc.dg/spellcheck-params-2.c
@@ -1,4 +1,4 @@
 /* { dg-do compile } */
 /* { dg-options "--param does-not-resemble-anything=42" } */
-/* { dg-error "invalid --param name .does-not-resemble-anything."  "" { target *-*-* } 0 } */
+/* { dg-error "invalid '--param' name 'does-not-resemble-anything'"  "" { target *-*-* } 0 } */
 
diff --git a/gcc/testsuite/gcc.dg/spellcheck-params.c b/gcc/testsuite/gcc.dg/spellcheck-params.c
index 1bb7bca6024..01e1343ab9e 100644
--- a/gcc/testsuite/gcc.dg/spellcheck-params.c
+++ b/gcc/testsuite/gcc.dg/spellcheck-params.c
@@ -1,4 +1,4 @@
 /* { dg-do compile } */
 /* { dg-options "--param max-early-inliner-iteration=3" } */
-/* { dg-error "invalid --param name .max-early-inliner-iteration.; did you mean .max-early-inliner-iterations.?"  "" { target *-*-* } 0 } */
+/* { dg-error "invalid '--param' name 'max-early-inliner-iteration'; did you mean 'max-early-inliner-iterations'?"  "" { target *-*-* } 0 } */
 
diff --git a/gcc/testsuite/gcc.dg/strlenopt-49.c b/gcc/testsuite/gcc.dg/strlenopt-49.c
index 2e6ccd32f19..f901fd14b54 100644
--- a/gcc/testsuite/gcc.dg/strlenopt-49.c
+++ b/gcc/testsuite/gcc.dg/strlenopt-49.c
@@ -11,8 +11,8 @@ const char a3[3] = "12\0";
 const char a8[8] = "1234567\0";
 const char a9[9] = "12345678\0";
 
-const char ax[9] = "12345678\0\0\0\0";   /* { dg-warning "initializer-string for array of chars is too long" } */
-const char ay[9] = "\00012345678\0\0\0\0";   /* { dg-warning "initializer-string for array of chars is too long" } */
+const char ax[9] = "12345678\0\0\0\0";   /* { dg-warning "initializer-string for array of 'char' is too long" } */
+const char ay[9] = "\00012345678\0\0\0\0";   /* { dg-warning "initializer-string for array of 'char' is too long" } */
 
 
 int len1 (void)
diff --git a/gcc/testsuite/gcc.dg/tm/pr52141.c b/gcc/testsuite/gcc.dg/tm/pr52141.c
index 0dabf76ce6d..dbaab307a1e 100644
--- a/gcc/testsuite/gcc.dg/tm/pr52141.c
+++ b/gcc/testsuite/gcc.dg/tm/pr52141.c
@@ -4,7 +4,7 @@
 __attribute__((always_inline))
 static void asmfunc(void)
 {
-  __asm__ (""); /* { dg-error "asm not allowed in .transaction_safe" } */
+  __asm__ (""); /* { dg-error "'asm' not allowed in 'transaction_safe" } */
 }
 
 __attribute__((transaction_safe))
diff --git a/gcc/testsuite/gcc.dg/torture/pr51106-1.c b/gcc/testsuite/gcc.dg/torture/pr51106-1.c
index 8a1227d30d6..5501b546fe0 100644
--- a/gcc/testsuite/gcc.dg/torture/pr51106-1.c
+++ b/gcc/testsuite/gcc.dg/torture/pr51106-1.c
@@ -6,7 +6,7 @@ int
 foo (int x)
 {
   asm goto ("" : : "i" (x) : : lab); /* { dg-error "impossible constraint" } */
-  /* { dg-warning "probably doesn.t match constraints" "" { target *-*-* } .-1 } */
+  /* { dg-warning "probably does not match constraints" "" { target *-*-* } .-1 } */
   return 1;
 lab:
   return 0;
diff --git a/gcc/testsuite/gcc.dg/torture/pr51106-2.c b/gcc/testsuite/gcc.dg/torture/pr51106-2.c
index aa76a71c58d..2dbb832b7cc 100644
--- a/gcc/testsuite/gcc.dg/torture/pr51106-2.c
+++ b/gcc/testsuite/gcc.dg/torture/pr51106-2.c
@@ -7,7 +7,7 @@ int
 bar (int x)
 {
   asm goto ("" : : "i" (x) : : lab); /* { dg-error "impossible constraint" } */
-/* { dg-warning "probably doesn.t match constraints" "" { target *-*-* } .-1 } */
+/* { dg-warning "probably does not match constraints" "" { target *-*-* } .-1 } */
   __builtin_unreachable ();
 lab:
   return 0;
diff --git a/gcc/testsuite/gcc.dg/utf-array-short-wchar.c b/gcc/testsuite/gcc.dg/utf-array-short-wchar.c
index a582e71178c..81b452a33a1 100644
--- a/gcc/testsuite/gcc.dg/utf-array-short-wchar.c
+++ b/gcc/testsuite/gcc.dg/utf-array-short-wchar.c
@@ -21,8 +21,8 @@ const char16_t	s16_2[]	= U"ab";	/* { dg-error "from a string literal with type a
 const char16_t	s16_3[]	= L"ab";
 const char16_t	s16_4[]	= u8"ab";	/* { dg-error "from a string literal with type array of .char." } */
 
-const char16_t	s16_5[0] = u"ab";	/* { dg-warning "chars is too long" } */
-const char16_t	s16_6[1] = u"ab";	/* { dg-warning "chars is too long" } */
+const char16_t	s16_5[0] = u"ab";	/* { dg-warning " is too long" } */
+const char16_t	s16_6[1] = u"ab";	/* { dg-warning " is too long" } */
 const char16_t	s16_7[2] = u"ab";
 const char16_t	s16_8[3] = u"ab";
 const char16_t	s16_9[4] = u"ab";
@@ -33,11 +33,11 @@ const char32_t	s32_2[]	= U"ab";
 const char32_t	s32_3[]	= L"ab";	/* { dg-error "from a string literal with type array of" } */
 const char32_t	s32_4[]	= u8"ab";	/* { dg-error "from a string literal with type array of .char." } */
 
-const char32_t	s32_5[0] = U"ab";	/* { dg-warning "chars is too long" } */
-const char32_t	s32_6[1] = U"ab";	/* { dg-warning "chars is too long" } */
-const char32_t	s32_7[2] = U"ab";	/* { dg-warning "chars is too long" "" { target "m32c-*-*" } } */
-const char32_t	s32_8[3] = U"ab";	/* { dg-warning "chars is too long" "" { target "m32c-*-*" } } */
-const char32_t	s32_9[4] = U"ab";	/* { dg-warning "chars is too long" "" { target "m32c-*-*" } } */
+const char32_t	s32_5[0] = U"ab";	/* { dg-warning " is too long" } */
+const char32_t	s32_6[1] = U"ab";	/* { dg-warning " is too long" } */
+const char32_t	s32_7[2] = U"ab";	/* { dg-warning " is too long" "" { target "m32c-*-*" } } */
+const char32_t	s32_8[3] = U"ab";	/* { dg-warning " is too long" "" { target "m32c-*-*" } } */
+const char32_t	s32_9[4] = U"ab";	/* { dg-warning " is too long" "" { target "m32c-*-*" } } */
 
 const wchar_t	sw_0[]	= "ab";		/* { dg-error "from a string literal with type array of .char." } */
 const wchar_t	sw_1[]	= u"ab";
diff --git a/gcc/testsuite/gcc.dg/utf-array.c b/gcc/testsuite/gcc.dg/utf-array.c
index 8687989a061..7f0cb915e04 100644
--- a/gcc/testsuite/gcc.dg/utf-array.c
+++ b/gcc/testsuite/gcc.dg/utf-array.c
@@ -21,8 +21,8 @@ const char16_t	s16_2[]	= U"ab";	/* { dg-error "from a string literal with type a
 const char16_t	s16_3[]	= L"ab";	/* { dg-error "from a string literal with type array of .(long |short )?(unsigned )?int." "" { target { ! wchar_t_char16_t_compatible } } } */
 const char16_t	s16_4[]	= u8"ab";	/* { dg-error "from a string literal with type array of .char." } */
 
-const char16_t	s16_5[0] = u"ab";	/* { dg-warning "chars is too long" } */
-const char16_t	s16_6[1] = u"ab";	/* { dg-warning "chars is too long" } */
+const char16_t	s16_5[0] = u"ab";	/* { dg-warning " is too long" } */
+const char16_t	s16_6[1] = u"ab";	/* { dg-warning " is too long" } */
 const char16_t	s16_7[2] = u"ab";
 const char16_t	s16_8[3] = u"ab";
 const char16_t	s16_9[4] = u"ab";
@@ -33,11 +33,11 @@ const char32_t	s32_2[]	= U"ab";
 const char32_t	s32_3[]	= L"ab";	/* { dg-error "from a string literal with type array of .(long |short )?(unsigned )?int." "" { target { ! wchar_t_char32_t_compatible } } } */
 const char32_t	s32_4[]	= u8"ab";	/* { dg-error "from a string literal with type array of .char." } */
 
-const char32_t	s32_5[0] = U"ab";	/* { dg-warning "chars is too long" } */
-const char32_t	s32_6[1] = U"ab";	/* { dg-warning "chars is too long" } */
-const char32_t	s32_7[2] = U"ab";	/* { dg-warning "chars is too long" "" { target "m32c-*-*" } } */
-const char32_t	s32_8[3] = U"ab";	/* { dg-warning "chars is too long" "" { target "m32c-*-*" } } */
-const char32_t	s32_9[4] = U"ab";	/* { dg-warning "chars is too long" "" { target "m32c-*-*" } } */
+const char32_t	s32_5[0] = U"ab";	/* { dg-warning " is too long" } */
+const char32_t	s32_6[1] = U"ab";	/* { dg-warning " is too long" } */
+const char32_t	s32_7[2] = U"ab";	/* { dg-warning " is too long" "" { target "m32c-*-*" } } */
+const char32_t	s32_8[3] = U"ab";	/* { dg-warning " is too long" "" { target "m32c-*-*" } } */
+const char32_t	s32_9[4] = U"ab";	/* { dg-warning " is too long" "" { target "m32c-*-*" } } */
 
 const wchar_t	sw_0[]	= "ab";		/* { dg-error "from a string literal with type array of .char." } */
 const wchar_t	sw_1[]	= u"ab";	/* { dg-error "from a string literal with type array of" "" { target { ! wchar_t_char16_t_compatible } } } */
diff --git a/gcc/testsuite/gcc.dg/utf8-2.c b/gcc/testsuite/gcc.dg/utf8-2.c
index d96b15dccb7..b3b873dfd8a 100644
--- a/gcc/testsuite/gcc.dg/utf8-2.c
+++ b/gcc/testsuite/gcc.dg/utf8-2.c
@@ -12,16 +12,16 @@ const char16_t	s1[]	= u8"ab";	/* { dg-error "from a string literal with type arr
 const char32_t  s2[]    = u8"ab";	/* { dg-error "from a string literal with type array of .char." } */
 const wchar_t   s3[]    = u8"ab";	/* { dg-error "from a string literal with type array of .char." } */
 
-const char      t0[0]   = u8"ab";	/* { dg-warning "chars is too long" } */
-const char      t1[1]   = u8"ab";	/* { dg-warning "chars is too long" } */
+const char      t0[0]   = u8"ab";	/* { dg-warning " is too long" } */
+const char      t1[1]   = u8"ab";	/* { dg-warning " is too long" } */
 const char      t2[2]   = u8"ab";
 const char      t3[3]   = u8"ab";
 const char      t4[4]   = u8"ab";
 
-const char      u0[0]   = u8"\u2160.";	/* { dg-warning "chars is too long" } */
-const char      u1[1]   = u8"\u2160.";	/* { dg-warning "chars is too long" } */
-const char      u2[2]   = u8"\u2160.";	/* { dg-warning "chars is too long" } */
-const char      u3[3]   = u8"\u2160.";	/* { dg-warning "chars is too long" } */
+const char      u0[0]   = u8"\u2160.";	/* { dg-warning " is too long" } */
+const char      u1[1]   = u8"\u2160.";	/* { dg-warning " is too long" } */
+const char      u2[2]   = u8"\u2160.";	/* { dg-warning " is too long" } */
+const char      u3[3]   = u8"\u2160.";	/* { dg-warning " is too long" } */
 const char      u4[4]   = u8"\u2160.";
 const char      u5[5]   = u8"\u2160.";
 const char      u6[6]   = u8"\u2160.";
diff --git a/gcc/testsuite/gcc.dg/warn-sprintf-no-nul.c b/gcc/testsuite/gcc.dg/warn-sprintf-no-nul.c
index b331bb5aaff..a38679fa888 100644
--- a/gcc/testsuite/gcc.dg/warn-sprintf-no-nul.c
+++ b/gcc/testsuite/gcc.dg/warn-sprintf-no-nul.c
@@ -26,7 +26,7 @@ void sink (int, ...);
 const char a[5] = "12345";    /* { dg-message "declared here" } */
 const char b[6] = "123456";   /* { dg-message "declared here" } */
 const char a2[][3] = {
-  "", "1", "12", "123", "123\000"   /* { dg-warning "initializer-string for array of chars is too long" } */
+  "", "1", "12", "123", "123\000"   /* { dg-warning "initializer-string for array of 'char' is too long" } */
 };
 
 
diff --git a/gcc/testsuite/gcc.target/i386/asm-flag-0.c b/gcc/testsuite/gcc.target/i386/asm-flag-0.c
index b0c05239b01..e7bd1a585f9 100644
--- a/gcc/testsuite/gcc.target/i386/asm-flag-0.c
+++ b/gcc/testsuite/gcc.target/i386/asm-flag-0.c
@@ -11,5 +11,5 @@ void a(void)
 void b(void)
 {
   char x;
-  asm("" : "=@ccbad"(x)); /* { dg-error "unknown asm flag output" } */
+  asm("" : "=@ccbad"(x)); /* { dg-error "unknown 'asm' flag output" } */
 }
diff --git a/gcc/testsuite/gcc.target/i386/inline_error.c b/gcc/testsuite/gcc.target/i386/inline_error.c
index 18e506631eb..57e60fbadef 100644
--- a/gcc/testsuite/gcc.target/i386/inline_error.c
+++ b/gcc/testsuite/gcc.target/i386/inline_error.c
@@ -2,7 +2,7 @@
 /* { dg-options "-O0 -mno-popcnt" } */
 
 inline int __attribute__ ((__gnu_inline__, __always_inline__, target("popcnt")))
-foo () /* { dg-error "inlining failed in call to always_inline .* target specific option mismatch" } */
+foo () /* { dg-error "inlining failed in call to 'always_inline' .* target specific option mismatch" } */
 {
   return 0;
 }
diff --git a/gcc/testsuite/gcc.target/i386/pr30848.c b/gcc/testsuite/gcc.target/i386/pr30848.c
index 2a92851516c..9c4e22ac716 100644
--- a/gcc/testsuite/gcc.target/i386/pr30848.c
+++ b/gcc/testsuite/gcc.target/i386/pr30848.c
@@ -2,5 +2,5 @@
 
 void foo(double d)
 {
-  __asm__ ("" : "=u" (d));  /* { dg-error "output regs" } */
+  __asm__ ("" : "=u" (d));  /* { dg-error "output registers" } */
 }
diff --git a/gcc/testsuite/gcc.target/i386/pr39082-1.c b/gcc/testsuite/gcc.target/i386/pr39082-1.c
index 2af2264c3cc..85b5671e920 100644
--- a/gcc/testsuite/gcc.target/i386/pr39082-1.c
+++ b/gcc/testsuite/gcc.target/i386/pr39082-1.c
@@ -13,7 +13,7 @@ extern int bar1 (union un);
 extern union un bar2 (int);
 
 int
-foo1 (union un u) /* { dg-message "note: the ABI of passing union with long double has changed in GCC 4.4" } */
+foo1 (union un u) /* { dg-message "note: the ABI of passing union with 'long double' has changed in GCC 4.4" } */
 {
   bar1 (u);
   return u.i;
diff --git a/gcc/testsuite/gcc.target/i386/pr39678.c b/gcc/testsuite/gcc.target/i386/pr39678.c
index 0548466d6de..c94c002f14b 100644
--- a/gcc/testsuite/gcc.target/i386/pr39678.c
+++ b/gcc/testsuite/gcc.target/i386/pr39678.c
@@ -10,7 +10,7 @@ struct X {
 
 struct X
 foo (float *p)
-{ /* { dg-message "note: the ABI of passing structure with complex float member has changed in GCC 4.4" } */
+{ /* { dg-message "note: the ABI of passing structure with 'complex float' member has changed in GCC 4.4" } */
   struct X x;
   x.c = -3;
   __real x.val = p[0];
diff --git a/gcc/testsuite/gcc.target/i386/pr57756.c b/gcc/testsuite/gcc.target/i386/pr57756.c
index 25c565c879a..9a78f62c98c 100644
--- a/gcc/testsuite/gcc.target/i386/pr57756.c
+++ b/gcc/testsuite/gcc.target/i386/pr57756.c
@@ -3,7 +3,7 @@
 
 /* callee cannot be inlined into caller because it has a higher target ISA.  */
 __attribute__((always_inline,target("sse4.2")))
-__inline int callee () /* { dg-error "inlining failed in call to always_inline" }  */
+__inline int callee () /* { dg-error "inlining failed in call to 'always_inline'" }  */
 {
   return 0;
 }
diff --git a/gcc/testsuite/gcc.target/i386/pr68843-1.c b/gcc/testsuite/gcc.target/i386/pr68843-1.c
index da0676aa69b..6198ea9af05 100644
--- a/gcc/testsuite/gcc.target/i386/pr68843-1.c
+++ b/gcc/testsuite/gcc.target/i386/pr68843-1.c
@@ -5,7 +5,7 @@ double
 test ()
 {
   double x = 1.0;
-  asm ("fld %1" /* { dg-error "explicitly used regs must be grouped at top of stack" } */
+  asm ("fld %1" /* { dg-error "explicitly used registers must be grouped at top of stack" } */
        : "=&t" (x)
        : "u" (x));
   return x;
diff --git a/gcc/testsuite/gcc.target/i386/pr79804.c b/gcc/testsuite/gcc.target/i386/pr79804.c
index 10adb44667a..08d1a3ea1f1 100644
--- a/gcc/testsuite/gcc.target/i386/pr79804.c
+++ b/gcc/testsuite/gcc.target/i386/pr79804.c
@@ -7,4 +7,4 @@ void foo (void)
   register int r19 asm ("19");
 
   asm volatile ("# %0" : "=r"(r19));  /* { dg-error "invalid use of register" } */
-}  /* { dg-error "cannot be used in asm here" } */
+}  /* { dg-error "cannot be used in 'asm' here" } */
diff --git a/gcc/testsuite/gcc.target/i386/pr82673.c b/gcc/testsuite/gcc.target/i386/pr82673.c
index 50eb5a3bcfc..161ec88e3a7 100644
--- a/gcc/testsuite/gcc.target/i386/pr82673.c
+++ b/gcc/testsuite/gcc.target/i386/pr82673.c
@@ -9,4 +9,4 @@ void
 bar (void) /* { dg-error "frame pointer required, but reserved" } */
 {
   B = &y;
-} /* { dg-error "bp cannot be used in asm here" } */
+} /* { dg-error "bp cannot be used in 'asm' here" } */
diff --git a/gcc/testsuite/obj-c++.dg/class-protocol-1.mm b/gcc/testsuite/obj-c++.dg/class-protocol-1.mm
index f0eab03eff9..78957cb061e 100644
--- a/gcc/testsuite/obj-c++.dg/class-protocol-1.mm
+++ b/gcc/testsuite/obj-c++.dg/class-protocol-1.mm
@@ -436,6 +436,4 @@ int main ()
   return(0);
 }
 
-/* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 0 } */
-/* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 0 } */
-/* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 0 } */
+/* { dg-warning "messages without a matching method signature will be assumed to return .id. and accept .\.\.\.. as arguments" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/obj-c++.dg/exceptions-3.mm b/gcc/testsuite/obj-c++.dg/exceptions-3.mm
index 90a657c8d70..622e4ca3b60 100644
--- a/gcc/testsuite/obj-c++.dg/exceptions-3.mm
+++ b/gcc/testsuite/obj-c++.dg/exceptions-3.mm
@@ -27,19 +27,19 @@ int test (id object)
   int dummy = 0;
 
   @try { @throw object; }
-  @catch (int x)          /* { dg-error "@catch parameter is not a known Objective-C class type" } */
+  @catch (int x)          /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
     {
       dummy++;
     }
 
   @try { @throw object; }
-  @catch (intTypedef x)   /* { dg-error "@catch parameter is not a known Objective-C class type" } */
+  @catch (intTypedef x)   /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
     {
       dummy++;
     }
 
   @try { @throw object; }
-  @catch (int *x)         /* { dg-error "@catch parameter is not a known Objective-C class type" } */
+  @catch (int *x)         /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
     {
       dummy++;
     }  
@@ -51,7 +51,7 @@ int test (id object)
     }
 
   @try { @throw object; }
-  @catch (id <MyProtocol> x) /* { dg-error "@catch parameter cannot be protocol-qualified" } */
+  @catch (id <MyProtocol> x) /* { dg-error "'@catch' parameter cannot be protocol-qualified" } */
     {
       dummy++;
     }
@@ -63,13 +63,13 @@ int test (id object)
     }
 
   @try { @throw object; }
-  @catch (MyObject <MyProtocol> *x)  /* { dg-error "@catch parameter cannot be protocol-qualified" } */
+  @catch (MyObject <MyProtocol> *x)  /* { dg-error "'@catch' parameter cannot be protocol-qualified" } */
     {
       dummy++;
     }
 
   @try { @throw object; }
-  @catch (MyObject x)     /* { dg-error "@catch parameter is not a known Objective-C class type" } */
+  @catch (MyObject x)     /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
     {                     /* { dg-error "no matching function" "" { target *-*-* } .-1 } */
       dummy++;            /* { dg-message "MyObject" "" { target *-*-* } interface_MyObject } */
     }                     /* { dg-message "candidate" "" { target *-*-* } interface_MyObject } */
@@ -86,7 +86,7 @@ int test (id object)
     }
 
   @try { @throw object; }
-  @catch (MyObjectTypedef <MyProtocol> *x) /* { dg-error "@catch parameter cannot be protocol-qualified" } */
+  @catch (MyObjectTypedef <MyProtocol> *x) /* { dg-error "'@catch' parameter cannot be protocol-qualified" } */
     {
       dummy++;
     }
@@ -98,7 +98,7 @@ int test (id object)
     }
 
   @try { @throw object; }
-  @catch (Class x)   /* { dg-error "@catch parameter is not a known Objective-C class type" } */
+  @catch (Class x)   /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
     {
       dummy++;
     }
diff --git a/gcc/testsuite/obj-c++.dg/exceptions-4.mm b/gcc/testsuite/obj-c++.dg/exceptions-4.mm
index ccdeb34a015..4aa00a6006f 100644
--- a/gcc/testsuite/obj-c++.dg/exceptions-4.mm
+++ b/gcc/testsuite/obj-c++.dg/exceptions-4.mm
@@ -33,18 +33,18 @@ int test (id object)
   @try { @throw object; }
   @catch
     {          /* { dg-error "expected" } */
-      dummy++; /* { dg-error "@catch parameter is not a known Objective-C class type" "" { target *-*-* } .-1 } */
+      dummy++; /* { dg-error "'@catch' parameter is not a known Objective-C class type" "" { target *-*-* } .-1 } */
     }
   @catch ()  /* { dg-error "expected identifier before" } */
-    {        /* { dg-error "@catch parameter is not a known Objective-C class type" "" { target *-*-* } .-1 } */
+    {        /* { dg-error "'@catch' parameter is not a known Objective-C class type" "" { target *-*-* } .-1 } */
       dummy++;
     }
   @catch (i) /* { dg-error ".i. has not been declared" } */
-    {        /* { dg-error "@catch parameter is not a known Objective-C class type" "" { target *-*-* } .-1 } */
+    {        /* { dg-error "'@catch' parameter is not a known Objective-C class type" "" { target *-*-* } .-1 } */
       dummy++;
     }
   @catch (id <MyProtocol x) /* { dg-error "expected ... before .x." } */
-    {                       /* { dg-error "@catch parameter cannot be protocol-qualified" "" { target *-*-* } .-1 } */
+    {                       /* { dg-error "'@catch' parameter cannot be protocol-qualified" "" { target *-*-* } .-1 } */
       dummy++;
     }
   @catch MyObject *x       /* { dg-error "expected ... before .MyObject." } */
diff --git a/gcc/testsuite/obj-c++.dg/exceptions-5.mm b/gcc/testsuite/obj-c++.dg/exceptions-5.mm
index 01bf10843b7..5aa08f35821 100644
--- a/gcc/testsuite/obj-c++.dg/exceptions-5.mm
+++ b/gcc/testsuite/obj-c++.dg/exceptions-5.mm
@@ -27,19 +27,19 @@ int test (id object)
   int dummy = 0;
 
   @try { @throw object; }
-  @catch (int)          /* { dg-error "@catch parameter is not a known Objective-C class type" } */
+  @catch (int)          /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
     {
       dummy++;
     }
 
   @try { @throw object; }
-  @catch (intTypedef)   /* { dg-error "@catch parameter is not a known Objective-C class type" } */
+  @catch (intTypedef)   /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
     {
       dummy++;
     }
 
   @try { @throw object; }
-  @catch (int *)         /* { dg-error "@catch parameter is not a known Objective-C class type" } */
+  @catch (int *)         /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
     {
       dummy++;
     }  
@@ -51,7 +51,7 @@ int test (id object)
     }
 
   @try { @throw object; }
-  @catch (id <MyProtocol>) /* { dg-error "@catch parameter cannot be protocol-qualified" } */
+  @catch (id <MyProtocol>) /* { dg-error "'@catch' parameter cannot be protocol-qualified" } */
     {
       dummy++;
     }
@@ -63,13 +63,13 @@ int test (id object)
     }
 
   @try { @throw object; }
-  @catch (MyObject <MyProtocol> *)  /* { dg-error "@catch parameter cannot be protocol-qualified" } */
+  @catch (MyObject <MyProtocol> *)  /* { dg-error "'@catch' parameter cannot be protocol-qualified" } */
     {
       dummy++;
     }
 
   @try { @throw object; }
-  @catch (MyObject)     /* { dg-error "@catch parameter is not a known Objective-C class type" } */
+  @catch (MyObject)     /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
     {                     /* { dg-error "no matching function" "" { target *-*-* } .-1 } */
       dummy++;            /* { dg-message "MyObject" "" { target *-*-* } interface_MyObject } */
     }                     /* { dg-message "candidate" "" { target *-*-* } interface_MyObject } */
@@ -87,7 +87,7 @@ int test (id object)
     }
 
   @try { @throw object; }
-  @catch (MyObjectTypedef <MyProtocol> *) /* { dg-error "@catch parameter cannot be protocol-qualified" } */
+  @catch (MyObjectTypedef <MyProtocol> *) /* { dg-error "'@catch' parameter cannot be protocol-qualified" } */
     {
       dummy++;
     }
@@ -99,7 +99,7 @@ int test (id object)
     }
 
   @try { @throw object; }
-  @catch (Class)   /* { dg-error "@catch parameter is not a known Objective-C class type" } */
+  @catch (Class)   /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
     {
       dummy++;
     }
diff --git a/gcc/testsuite/obj-c++.dg/exceptions-6.mm b/gcc/testsuite/obj-c++.dg/exceptions-6.mm
index 6f6ba783ea7..7a776a518a2 100644
--- a/gcc/testsuite/obj-c++.dg/exceptions-6.mm
+++ b/gcc/testsuite/obj-c++.dg/exceptions-6.mm
@@ -9,7 +9,7 @@
 void test (id object)
 {
   @throw object;   /* Ok */
-  @throw;          /* { dg-error ".@throw. .rethrow. used outside of a @catch block" } */
+  @throw;          /* { dg-error ".@throw. .rethrow. used outside of a '@catch' block" } */
   @throw (object); /* Ok.  */
   @throw (id)0     /* { dg-error "expected" } */
 }
diff --git a/gcc/testsuite/obj-c++.dg/method-12.mm b/gcc/testsuite/obj-c++.dg/method-12.mm
index 2282dec5b15..45461445178 100644
--- a/gcc/testsuite/obj-c++.dg/method-12.mm
+++ b/gcc/testsuite/obj-c++.dg/method-12.mm
@@ -24,9 +24,7 @@ void foo(void) {
        /* { dg-message "also found .\\+\\(Protocol \\*\\)port." "" { target *-*-* } Derived_port_last } */
 
   [receiver starboard];  /* { dg-warning "no .\\+starboard. method found" } */
-       /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } .-1 } */
-       /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } .-2 } */
-       /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } .-3 } */
+       /* { dg-warning "messages without a matching method signature will be assumed to return .id. and accept .\.\.\.. as arguments" "" { target *-*-* } 0 } */
 
   [Class port];  /* { dg-error ".Class. is not an Objective\\-C class name or alias" } */
 }
diff --git a/gcc/testsuite/obj-c++.dg/method-13.mm b/gcc/testsuite/obj-c++.dg/method-13.mm
index b0a1f591117..cd53d0f2f16 100644
--- a/gcc/testsuite/obj-c++.dg/method-13.mm
+++ b/gcc/testsuite/obj-c++.dg/method-13.mm
@@ -16,10 +16,9 @@ id foo(void) {
   TestsuiteObject *obj = [[TestsuiteObject alloc] init];
   id obj2 = obj;
   [obj setWindow:nil];  /* { dg-warning ".TestsuiteObject. may not respond to .\\-setWindow:." } */
-       /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } .-1 } */
-       /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } .-2 } */
-       /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } .-3 } */
-  [obj2 setWindow:nil]; /* { dg-warning "multiple methods named .\\-setWindow:. found" } */
+       /* { dg-warning "messages without a matching method signature will be assumed to return .id. and accept .\.\.\.. as arguments" "" { target *-*-* } 0 } */
+
+[obj2 setWindow:nil]; /* { dg-warning "multiple methods named .\\-setWindow:. found" } */
        /* { dg-message "using .\\-\\(void\\)setWindow:\\(TestsuiteObject \\*\\)wdw." "" { target *-*-* } Class1_setWindow } */
        /* { dg-message "also found .\\-\\(void\\)setWindow:\\(Class1 \\*\\)window." "" { target *-*-* } Class2_setWindow } */
 
diff --git a/gcc/testsuite/obj-c++.dg/method-6.mm b/gcc/testsuite/obj-c++.dg/method-6.mm
index 8f60511f788..65c0043e2e2 100644
--- a/gcc/testsuite/obj-c++.dg/method-6.mm
+++ b/gcc/testsuite/obj-c++.dg/method-6.mm
@@ -8,11 +8,9 @@
 @class NotKnown;
 
 void foo(NotKnown *n) {
-  [NotKnown new];         /* { dg-warning ".interface of class .NotKnown. not found" } */
-  [n nonexistent_method]; /* { dg-warning ".interface of class .NotKnown. not found" } */
+  [NotKnown new];         /* { dg-warning "'.interface' of class .NotKnown. not found" } */
+  [n nonexistent_method]; /* { dg-warning "'.interface' of class .NotKnown. not found" } */
                           /* { dg-warning "no .\\-nonexistent_method. method found" "" { target *-*-* } .-1 } */
 }
 
-/* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 0 } */
-/* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 0 } */
-/* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 0 } */
+/* { dg-warning "messages without a matching method signature will be assumed to return .id. and accept .\.\.\.. as arguments" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/obj-c++.dg/method-7.mm b/gcc/testsuite/obj-c++.dg/method-7.mm
index 89409143e14..277a7e9e223 100644
--- a/gcc/testsuite/obj-c++.dg/method-7.mm
+++ b/gcc/testsuite/obj-c++.dg/method-7.mm
@@ -11,12 +11,10 @@ void foo(UnderSpecified *u, NotAClass *n) {
   [n nonexistent_method];    /* { dg-warning "invalid receiver type" } */
        /* { dg-warning "no .\\-nonexistent_method. method found" "" { target *-*-* } .-1 } */
   [NotAClass nonexistent_method]; /* { dg-error ".NotAClass. is not an Objective\\-C class name or alias" } */
-  [u nonexistent_method];    /* { dg-warning ".interface of class .UnderSpecified. not found" } */
+  [u nonexistent_method];    /* { dg-warning "'.interface' of class .UnderSpecified. not found" } */
                              /* { dg-warning "no .\\-nonexistent_method. method found" "" { target *-*-* } .-1 } */
-  [UnderSpecified nonexistent_method]; /* { dg-warning ".interface of class .UnderSpecified. not found" } */
+  [UnderSpecified nonexistent_method]; /* { dg-warning "'.interface' of class .UnderSpecified. not found" } */
                                        /* { dg-warning "no .\\+nonexistent_method. method found" "" { target *-*-* } .-1 } */
 }
 
-/* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 0 } */
-/* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 0 } */
-/* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 0 } */
+/* { dg-warning "messages without a matching method signature will be assumed to return .id. and accept .\.\.\.. as arguments" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/obj-c++.dg/method-9.mm b/gcc/testsuite/obj-c++.dg/method-9.mm
index 4509c4aa477..787e25d67ff 100644
--- a/gcc/testsuite/obj-c++.dg/method-9.mm
+++ b/gcc/testsuite/obj-c++.dg/method-9.mm
@@ -27,7 +27,4 @@
 }
 @end
 
-/* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 0 } */
-/* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 0 } */
-/* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 0 } */
-
+/* { dg-warning "messages without a matching method signature will be assumed to return .id. and accept .\.\.\.. as arguments" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/obj-c++.dg/method-lookup-1.mm b/gcc/testsuite/obj-c++.dg/method-lookup-1.mm
index 47499c37c08..e458471ff2c 100644
--- a/gcc/testsuite/obj-c++.dg/method-lookup-1.mm
+++ b/gcc/testsuite/obj-c++.dg/method-lookup-1.mm
@@ -39,7 +39,7 @@ void test (Class x, Class <MyProtocol> y, id w, id <MyProtocol> z, NotKnown *a,
 
   /* If a class is specified by name, the @interface must be available
      to check what it responds to.  */
-  [NotKnown classMethod]; /* { dg-warning ".interface of class .NotKnown. not found" } */
+  [NotKnown classMethod]; /* { dg-warning "'.interface' of class .NotKnown. not found" } */
 
 
   /* "id w" means that "w" responds to anything, both class and
@@ -70,7 +70,7 @@ void test (Class x, Class <MyProtocol> y, id w, id <MyProtocol> z, NotKnown *a,
      because they expect the compiler to do type-checking; the
      @interface must be available to do this check, otherwise the
      compiler does not know what "a" responds to.  */
-  [a instanceMethod];  /* { dg-warning ".interface of class .NotKnown. not found" } */
+  [a instanceMethod];  /* { dg-warning "'.interface' of class .NotKnown. not found" } */
 
   /* But, if you cast it to "id", then you're disabling type-checking
      and the warnings should go away.  */
diff --git a/gcc/testsuite/obj-c++.dg/proto-lossage-4.mm b/gcc/testsuite/obj-c++.dg/proto-lossage-4.mm
index 2b9945fc16c..2e753d1f8ba 100644
--- a/gcc/testsuite/obj-c++.dg/proto-lossage-4.mm
+++ b/gcc/testsuite/obj-c++.dg/proto-lossage-4.mm
@@ -47,6 +47,4 @@ long foo(void) {
   return receiver;
 }
 
-/* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 0 } */
-/* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 0 } */
-/* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 0 } */
+/* { dg-warning "messages without a matching method signature will be assumed to return .id. and accept .\.\.\.. as arguments" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/obj-c++.dg/protocol-qualifier-2.mm b/gcc/testsuite/obj-c++.dg/protocol-qualifier-2.mm
index 9fb09b5f2bb..b59a6192aca 100644
--- a/gcc/testsuite/obj-c++.dg/protocol-qualifier-2.mm
+++ b/gcc/testsuite/obj-c++.dg/protocol-qualifier-2.mm
@@ -25,7 +25,6 @@ void test1 (void)
 {
   [object1 method]; /* Ok */
   [object2 method]; /* { dg-warning ".MyClass. may not respond to ..method." } */
-                    /* { dg-warning "without a matching method" "" { target *-*-* } .-1 } */
-                    /* { dg-warning "will be assumed to return" "" { target *-*-* } .-2 } */
-                    /* { dg-warning "as arguments" "" { target *-*-* } .-3 } */
+
+  /* { dg-warning "Messages without a matching method signature will be assumed to return .id. and accept .\.\.\.. as arguments" "" { target *-*-* } 0 } */
 }
diff --git a/gcc/testsuite/objc.dg/call-super-2.m b/gcc/testsuite/objc.dg/call-super-2.m
index af01d445364..0a3765f07fb 100644
--- a/gcc/testsuite/objc.dg/call-super-2.m
+++ b/gcc/testsuite/objc.dg/call-super-2.m
@@ -141,6 +141,4 @@
 }
 @end
 
-/* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 0 } */
-/* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 0 } */
-/* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 0 } */
+/* { dg-warning "messages without a matching method signature will be assumed to return .id. and accept .\.\.\.. as arguments" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/objc.dg/class-protocol-1.m b/gcc/testsuite/objc.dg/class-protocol-1.m
index 086201eef52..59c8f827615 100644
--- a/gcc/testsuite/objc.dg/class-protocol-1.m
+++ b/gcc/testsuite/objc.dg/class-protocol-1.m
@@ -436,6 +436,4 @@ int main ()
   return(0);
 }
 
-/* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 0 } */
-/* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 0 } */
-/* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 0 } */
+/* { dg-warning "messages without a matching method signature will be assumed to return .id. and accept .\.\.\.. as arguments" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/objc.dg/desig-init-1.m b/gcc/testsuite/objc.dg/desig-init-1.m
index 24fe7094eae..e5d5a595e91 100644
--- a/gcc/testsuite/objc.dg/desig-init-1.m
+++ b/gcc/testsuite/objc.dg/desig-init-1.m
@@ -44,8 +44,4 @@ int main(void) {
   return 0;
 }
 
-/* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 0 } */
-/* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 0 } */
-/* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 0 } */
-
-
+/* { dg-warning "messages without a matching method signature will be assumed to return .id. and accept .\.\.\.. as arguments" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/objc.dg/exceptions-3.m b/gcc/testsuite/objc.dg/exceptions-3.m
index 5548a39a08c..69a6494e048 100644
--- a/gcc/testsuite/objc.dg/exceptions-3.m
+++ b/gcc/testsuite/objc.dg/exceptions-3.m
@@ -27,19 +27,19 @@ int test (id object)
   int dummy = 0;
 
   @try { @throw object; }
-  @catch (int x)          /* { dg-error "@catch parameter is not a known Objective-C class type" } */
+  @catch (int x)          /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
     {
       dummy++;
     }
 
   @try { @throw object; }
-  @catch (intTypedef x)   /* { dg-error "@catch parameter is not a known Objective-C class type" } */
+  @catch (intTypedef x)   /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
     {
       dummy++;
     }
 
   @try { @throw object; }
-  @catch (int *x)         /* { dg-error "@catch parameter is not a known Objective-C class type" } */
+  @catch (int *x)         /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
     {
       dummy++;
     }  
@@ -51,7 +51,7 @@ int test (id object)
     }
 
   @try { @throw object; }
-  @catch (id <MyProtocol> x) /* { dg-error "@catch parameter cannot be protocol-qualified" } */
+  @catch (id <MyProtocol> x) /* { dg-error "'@catch' parameter cannot be protocol-qualified" } */
     {
       dummy++;
     }
@@ -63,13 +63,13 @@ int test (id object)
     }
 
   @try { @throw object; }
-  @catch (MyObject <MyProtocol> *x)  /* { dg-error "@catch parameter cannot be protocol-qualified" } */
+  @catch (MyObject <MyProtocol> *x)  /* { dg-error "'@catch' parameter cannot be protocol-qualified" } */
     {
       dummy++;
     }
 
   @try { @throw object; }
-  @catch (MyObject x)     /* { dg-error "@catch parameter is not a known Objective-C class type" } */
+  @catch (MyObject x)     /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
     {                     /* { dg-error "conversion to non-scalar type requested" "" { target *-*-* } .-1 } */
       dummy++;
     }
@@ -87,7 +87,7 @@ int test (id object)
     }
 
   @try { @throw object; }
-  @catch (MyObjectTypedef <MyProtocol> *x) /* { dg-error "@catch parameter cannot be protocol-qualified" } */
+  @catch (MyObjectTypedef <MyProtocol> *x) /* { dg-error "'@catch' parameter cannot be protocol-qualified" } */
     {
       dummy++;
     }
@@ -99,7 +99,7 @@ int test (id object)
     }
 
   @try { @throw object; }
-  @catch (Class x)   /* { dg-error "@catch parameter is not a known Objective-C class type" } */
+  @catch (Class x)   /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
     {
       dummy++;
     }
diff --git a/gcc/testsuite/objc.dg/exceptions-4.m b/gcc/testsuite/objc.dg/exceptions-4.m
index 5db60e34aca..bbdb741f40b 100644
--- a/gcc/testsuite/objc.dg/exceptions-4.m
+++ b/gcc/testsuite/objc.dg/exceptions-4.m
@@ -44,7 +44,7 @@ int test (id object)
       dummy++;
     }
   @catch (id <MyProtocol x) /* { dg-error "expected ... before .x." } */
-    {                       /* { dg-error "@catch parameter cannot be protocol-qualified" "" { target *-*-* } .-1 } */
+    {                       /* { dg-error "'@catch' parameter cannot be protocol-qualified" "" { target *-*-* } .-1 } */
       dummy++;
     }
   @catch MyObject *x       /* { dg-error "expected ... before .MyObject." } */
diff --git a/gcc/testsuite/objc.dg/exceptions-5.m b/gcc/testsuite/objc.dg/exceptions-5.m
index 402aa114ade..55ef0f340e6 100644
--- a/gcc/testsuite/objc.dg/exceptions-5.m
+++ b/gcc/testsuite/objc.dg/exceptions-5.m
@@ -27,19 +27,19 @@ int test (id object)
   int dummy = 0;
 
   @try { @throw object; }
-  @catch (int)          /* { dg-error "@catch parameter is not a known Objective-C class type" } */
+  @catch (int)          /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
     {
       dummy++;
     }
 
   @try { @throw object; }
-  @catch (intTypedef)   /* { dg-error "@catch parameter is not a known Objective-C class type" } */
+  @catch (intTypedef)   /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
     {
       dummy++;
     }
 
   @try { @throw object; }
-  @catch (int *)         /* { dg-error "@catch parameter is not a known Objective-C class type" } */
+  @catch (int *)         /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
     {
       dummy++;
     }  
@@ -51,7 +51,7 @@ int test (id object)
     }
 
   @try { @throw object; }
-  @catch (id <MyProtocol>) /* { dg-error "@catch parameter cannot be protocol-qualified" } */
+  @catch (id <MyProtocol>) /* { dg-error "'@catch' parameter cannot be protocol-qualified" } */
     {
       dummy++;
     }
@@ -63,13 +63,13 @@ int test (id object)
     }
 
   @try { @throw object; }
-  @catch (MyObject <MyProtocol> *)  /* { dg-error "@catch parameter cannot be protocol-qualified" } */
+  @catch (MyObject <MyProtocol> *)  /* { dg-error "'@catch' parameter cannot be protocol-qualified" } */
     {
       dummy++;
     }
 
   @try { @throw object; }
-  @catch (MyObject)     /* { dg-error "@catch parameter is not a known Objective-C class type" } */
+  @catch (MyObject)     /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
     {                     /* { dg-error "conversion to non-scalar type requested" "" { target *-*-* } .-1 } */
       dummy++;
     }
@@ -87,7 +87,7 @@ int test (id object)
     }
 
   @try { @throw object; }
-  @catch (MyObjectTypedef <MyProtocol> *) /* { dg-error "@catch parameter cannot be protocol-qualified" } */
+  @catch (MyObjectTypedef <MyProtocol> *) /* { dg-error "'@catch' parameter cannot be protocol-qualified" } */
     {
       dummy++;
     }
@@ -99,7 +99,7 @@ int test (id object)
     }
 
   @try { @throw object; }
-  @catch (Class)   /* { dg-error "@catch parameter is not a known Objective-C class type" } */
+  @catch (Class)   /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
     {
       dummy++;
     }
diff --git a/gcc/testsuite/objc.dg/exceptions-6.m b/gcc/testsuite/objc.dg/exceptions-6.m
index 74be98d39fa..ae44a88e436 100644
--- a/gcc/testsuite/objc.dg/exceptions-6.m
+++ b/gcc/testsuite/objc.dg/exceptions-6.m
@@ -9,7 +9,7 @@
 void test (id object)
 {
   @throw object;   /* Ok */
-  @throw;          /* { dg-error ".@throw. .rethrow. used outside of a @catch block" } */
+  @throw;          /* { dg-error ".@throw. .rethrow. used outside of a '@catch' block" } */
   @throw (object); /* Ok.  */
   @throw (id)0     /* { dg-error "expected" } */
 }
diff --git a/gcc/testsuite/objc.dg/method-19.m b/gcc/testsuite/objc.dg/method-19.m
index 8f60511f788..8e354bbd1ba 100644
--- a/gcc/testsuite/objc.dg/method-19.m
+++ b/gcc/testsuite/objc.dg/method-19.m
@@ -8,11 +8,9 @@
 @class NotKnown;
 
 void foo(NotKnown *n) {
-  [NotKnown new];         /* { dg-warning ".interface of class .NotKnown. not found" } */
-  [n nonexistent_method]; /* { dg-warning ".interface of class .NotKnown. not found" } */
+  [NotKnown new];         /* { dg-warning "'.interface' of class .NotKnown. not found" } */
+  [n nonexistent_method]; /* { dg-warning "'.interface' of class .NotKnown. not found" } */
                           /* { dg-warning "no .\\-nonexistent_method. method found" "" { target *-*-* } .-1 } */
 }
 
-/* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 0 } */
-/* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 0 } */
-/* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 0 } */
+/* { dg-warning "Messages without a matching method signature will be assumed to return .id. and accept .\.\.\.. as arguments" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/objc.dg/method-2.m b/gcc/testsuite/objc.dg/method-2.m
index b6aa32d4f29..cae2d7ff6f7 100644
--- a/gcc/testsuite/objc.dg/method-2.m
+++ b/gcc/testsuite/objc.dg/method-2.m
@@ -23,9 +23,7 @@
     [MyIntermediate rootInstanceMethod];  /* with the same name.                       */
 
     [self instanceMethod];   /* { dg-warning ".MyDerived. may not respond to .\\+instanceMethod." } */
-       /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } .-1 } */
-       /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } .-2 } */
-       /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } .-3 } */
+    /* { dg-warning "messages without a matching method signature will be assumed to return .id. and accept .\.\.\.. as arguments" "" { target *-*-* } 0 } */
     [MyDerived instanceMethod];   /* { dg-warning ".MyDerived. may not respond to .\\+instanceMethod." } */
 }
 @end
diff --git a/gcc/testsuite/objc.dg/method-5.m b/gcc/testsuite/objc.dg/method-5.m
index 89409143e14..277a7e9e223 100644
--- a/gcc/testsuite/objc.dg/method-5.m
+++ b/gcc/testsuite/objc.dg/method-5.m
@@ -11,12 +11,10 @@ void foo(UnderSpecified *u, NotAClass *n) {
   [n nonexistent_method];    /* { dg-warning "invalid receiver type" } */
        /* { dg-warning "no .\\-nonexistent_method. method found" "" { target *-*-* } .-1 } */
   [NotAClass nonexistent_method]; /* { dg-error ".NotAClass. is not an Objective\\-C class name or alias" } */
-  [u nonexistent_method];    /* { dg-warning ".interface of class .UnderSpecified. not found" } */
+  [u nonexistent_method];    /* { dg-warning "'.interface' of class .UnderSpecified. not found" } */
                              /* { dg-warning "no .\\-nonexistent_method. method found" "" { target *-*-* } .-1 } */
-  [UnderSpecified nonexistent_method]; /* { dg-warning ".interface of class .UnderSpecified. not found" } */
+  [UnderSpecified nonexistent_method]; /* { dg-warning "'.interface' of class .UnderSpecified. not found" } */
                                        /* { dg-warning "no .\\+nonexistent_method. method found" "" { target *-*-* } .-1 } */
 }
 
-/* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 0 } */
-/* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 0 } */
-/* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 0 } */
+/* { dg-warning "messages without a matching method signature will be assumed to return .id. and accept .\.\.\.. as arguments" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/objc.dg/method-6.m b/gcc/testsuite/objc.dg/method-6.m
index 35676b18f06..3ff73e0e9ca 100644
--- a/gcc/testsuite/objc.dg/method-6.m
+++ b/gcc/testsuite/objc.dg/method-6.m
@@ -31,9 +31,7 @@ void foo(void) {
        /* { dg-message "also found .\\+\\(Protocol \\*\\)port." "" { target *-*-* } Derived_port_last } */
 
   [receiver starboard];  /* { dg-warning "no .\\+starboard. method found" } */
-       /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } .-1 } */
-       /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } .-2 } */
-       /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } .-3 } */
+  /* { dg-warning "messages without a matching method signature will be assumed to return .id. and accept .\.\.\.. as arguments" "" { target *-*-* } 0 } */
 
   [Class port];  /* { dg-error ".Class. is not an Objective\\-C class name or alias" } */
 }
diff --git a/gcc/testsuite/objc.dg/method-7.m b/gcc/testsuite/objc.dg/method-7.m
index a5957aedbaa..314e8abaf89 100644
--- a/gcc/testsuite/objc.dg/method-7.m
+++ b/gcc/testsuite/objc.dg/method-7.m
@@ -18,9 +18,7 @@ id foo(void) {
   TestsuiteObject *obj = [[TestsuiteObject alloc] init];
   id obj2 = obj;
   [obj setWindow:nil];  /* { dg-warning ".TestsuiteObject. may not respond to .\\-setWindow:." } */
-  /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } .-1 } */
-  /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } .-2 } */
-  /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } .-3 } */
+  /* { dg-warning "messages without a matching method signature will be assumed to return .id. and accept .\.\.\.. as arguments" "" { target *-*-* } 0 } */
   [obj2 setWindow:nil]; /* { dg-warning "multiple methods named .\\-setWindow:. found" } */
   /* { dg-message "using .\\-\\(void\\)setWindow:\\(TestsuiteObject \\*\\)wdw." "" { target *-*-* } Class1_setWindow } */
   /* { dg-message "also found .\\-\\(void\\)setWindow:\\(Class1 \\*\\)window." "" { target *-*-* } Class2_setWindow } */
diff --git a/gcc/testsuite/objc.dg/method-lookup-1.m b/gcc/testsuite/objc.dg/method-lookup-1.m
index 47499c37c08..e458471ff2c 100644
--- a/gcc/testsuite/objc.dg/method-lookup-1.m
+++ b/gcc/testsuite/objc.dg/method-lookup-1.m
@@ -39,7 +39,7 @@ void test (Class x, Class <MyProtocol> y, id w, id <MyProtocol> z, NotKnown *a,
 
   /* If a class is specified by name, the @interface must be available
      to check what it responds to.  */
-  [NotKnown classMethod]; /* { dg-warning ".interface of class .NotKnown. not found" } */
+  [NotKnown classMethod]; /* { dg-warning "'.interface' of class .NotKnown. not found" } */
 
 
   /* "id w" means that "w" responds to anything, both class and
@@ -70,7 +70,7 @@ void test (Class x, Class <MyProtocol> y, id w, id <MyProtocol> z, NotKnown *a,
      because they expect the compiler to do type-checking; the
      @interface must be available to do this check, otherwise the
      compiler does not know what "a" responds to.  */
-  [a instanceMethod];  /* { dg-warning ".interface of class .NotKnown. not found" } */
+  [a instanceMethod];  /* { dg-warning "'.interface' of class .NotKnown. not found" } */
 
   /* But, if you cast it to "id", then you're disabling type-checking
      and the warnings should go away.  */
diff --git a/gcc/testsuite/objc.dg/proto-hier-1.m b/gcc/testsuite/objc.dg/proto-hier-1.m
index fbd00f8d8ae..0f409fc69ed 100644
--- a/gcc/testsuite/objc.dg/proto-hier-1.m
+++ b/gcc/testsuite/objc.dg/proto-hier-1.m
@@ -53,6 +53,4 @@ int foo(void) {
   return 0;
 }
 
-/* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 0 } */
-/* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 0 } */
-/* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 0 } */
+/* { dg-warning "messages without a matching method signature will be assumed to return .id. and accept .\.\.\.. as arguments" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/objc.dg/proto-lossage-4.m b/gcc/testsuite/objc.dg/proto-lossage-4.m
index 182e92d94b2..9d1def5f9de 100644
--- a/gcc/testsuite/objc.dg/proto-lossage-4.m
+++ b/gcc/testsuite/objc.dg/proto-lossage-4.m
@@ -49,6 +49,4 @@ long foo(void) {
   return receiver;
 }
 
-/* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 0 } */
-/* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 0 } */
-/* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 0 } */
+/* { dg-warning "messages without a matching method signature will be assumed to return .id. and accept .\.\.\.. as arguments" "" { target *-*-* } 0 } */
