[9/12] adjust tests to quoting/spelling diagnostics fixes

Message ID 7a38b869-4884-a9c0-8b0b-1e26c8f50d5f@gmail.com
State New
Headers show
Series
  • detect quoting and punctuation problems in diagnostics
Related show

Commit Message

Martin Sebor May 14, 2019, 9:32 p.m.
The attached patch adjusts the expected test output to the quoting,
spelling and other formatting changes in diagnostics to fix issues
pointed out by the -Wformat-diag warning.

Martin

Comments

Jeff Law May 16, 2019, 7:35 p.m. | #1
On 5/14/19 3:32 PM, Martin Sebor wrote:
> The attached patch adjusts the expected test output to the quoting,

> spelling and other formatting changes in diagnostics to fix issues

> pointed out by the -Wformat-diag warning.

> 

> Martin

> 

> gcc-wformat-diag-tests.diff

> 

> 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.

OK.  I won't be surprised if there's other light fallout.  I'll forward
anything spit out by my tester.

Thanks for doing all this!
jeff
Martin Sebor May 17, 2019, 6:35 p.m. | #2
On 5/16/19 1:35 PM, Jeff Law wrote:
> On 5/14/19 3:32 PM, Martin Sebor wrote:

>> The attached patch adjusts the expected test output to the quoting,

>> spelling and other formatting changes in diagnostics to fix issues

>> pointed out by the -Wformat-diag warning.

>>

>> Martin

>>

>> gcc-wformat-diag-tests.diff

>>

>> 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.

> OK.  I won't be surprised if there's other light fallout.  I'll forward

> anything spit out by my tester.

> 

> Thanks for doing all this!

> jeff


It took a lot longer than I though or would have liked.  I tested
things several times but there well could be some fallout as I
made some last minute adjustments.  The quoting changes are checked
in, the checker itself is not.  I will post an updated revision for
review with Roland's suggestions shortly.

Martin
Jeff Law May 17, 2019, 8:54 p.m. | #3
On 5/17/19 12:35 PM, Martin Sebor wrote:
> On 5/16/19 1:35 PM, Jeff Law wrote:

>> On 5/14/19 3:32 PM, Martin Sebor wrote:

>>> The attached patch adjusts the expected test output to the quoting,

>>> spelling and other formatting changes in diagnostics to fix issues

>>> pointed out by the -Wformat-diag warning.

>>>

>>> Martin

>>>

>>> gcc-wformat-diag-tests.diff

>>>

>>> 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.

>> OK.  I won't be surprised if there's other light fallout.  I'll forward

>> anything spit out by my tester.

>>

>> Thanks for doing all this!

>> jeff

> 

> It took a lot longer than I though or would have liked.  I tested

> things several times but there well could be some fallout as I

> made some last minute adjustments.  The quoting changes are checked

> in, the checker itself is not.  I will post an updated revision for

> review with Roland's suggestions shortly.

Right.  That's 100% what I expected.  My testers will be picking it up
over the weekend, so if there's any bad fallout at this point we should
know Monday.

The next step will be to install the checker and let the testers loose
with that.

Jeff
> 

> Martin
Martin Sebor May 17, 2019, 11:19 p.m. | #4
On 5/17/19 2:54 PM, Jeff Law wrote:
> On 5/17/19 12:35 PM, Martin Sebor wrote:

>> On 5/16/19 1:35 PM, Jeff Law wrote:

>>> On 5/14/19 3:32 PM, Martin Sebor wrote:

>>>> The attached patch adjusts the expected test output to the quoting,

>>>> spelling and other formatting changes in diagnostics to fix issues

>>>> pointed out by the -Wformat-diag warning.

>>>>

>>>> Martin

>>>>

>>>> gcc-wformat-diag-tests.diff

>>>>

>>>> 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.

>>> OK.  I won't be surprised if there's other light fallout.  I'll forward

>>> anything spit out by my tester.

>>>

>>> Thanks for doing all this!

>>> jeff

>>

>> It took a lot longer than I though or would have liked.  I tested

>> things several times but there well could be some fallout as I

>> made some last minute adjustments.  The quoting changes are checked

>> in, the checker itself is not.  I will post an updated revision for

>> review with Roland's suggestions shortly.

> Right.  That's 100% what I expected.  My testers will be picking it up

> over the weekend, so if there's any bad fallout at this point we should

> know Monday.


I already spotted a few mistakes in the C and C++ tests I committed
(or didn't commit) so I've fixed those up in r271364 and r271364.

Martin

> 

> The next step will be to install the checker and let the testers loose

> with that.

> 

> Jeff

>>

>> Martin

>

Patch

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 } */