public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
@ 2017-03-23 15:46 Tom de Vries
  2017-03-23 16:24 ` Thomas Schwinge
                   ` (2 more replies)
  0 siblings, 3 replies; 21+ messages in thread
From: Tom de Vries @ 2017-03-23 15:46 UTC (permalink / raw)
  To: GCC Patches

[-- Attachment #1: Type: text/plain, Size: 263 bytes --]

Hi,

I've run the gcc testsuite for target nvptx-none and ran into "test for 
excess errors" FAILs due to:
...
sorry, unimplemented: target cannot support alloca.
...

This patch marks those testcases as requiring alloca.

OK for trunk for stage1?

Thanks,
- Tom

[-- Attachment #2: tmp.patch --]
[-- Type: text/x-patch, Size: 12627 bytes --]

2017-03-23  Tom de Vries  <tom@codesourcery.com>

	* gcc.dg/Walloca-7.c: Add dg-require-effective-target alloca.
	* gcc.dg/Walloca-12.c: Same.
	* gcc.dg/attr-alloc_size-8.c: Same.
	* gcc.dg/Walloca-4.c: Same.
	* gcc.dg/Walloca-8.c: Same.
	* gcc.dg/Walloca-13.c: Same.
	* gcc.dg/attr-alloc_size-9.c: Same.
	* gcc.dg/Walloca-1.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Same.
	* gcc.dg/Walloca-5.c: Same.
	* gcc.dg/Walloca-10.c: Same.
	* gcc.dg/Walloca-9.c: Same.
	* gcc.dg/attr-alloc_size-6.c: Same.
	* gcc.dg/Wvla-larger-than-1.c: Same.
	* gcc.dg/torture/pr71881.c: Same.
	* gcc.dg/torture/pr71901.c: Same.
	* gcc.dg/torture/pr78742.c: Same.
	* gcc.dg/builtin-alloc-size.c: Same.
	* gcc.dg/Walloca-2.c: Same.
	* gcc.dg/Walloca-6.c: Same.
	* gcc.dg/Walloca-11.c: Same.
	* gcc.dg/attr-alloc_size-7.c: Same.
	* gcc.dg/Wvla-larger-than-2.c: Same.
	* gcc.dg/Walloca-3.c: Same.
	* c-c++-common/Wimplicit-fallthrough-7.c: Same.
	* gcc.c-torture/compile/pr79413.c: Same.
	* gcc.c-torture/compile/pr78439.c: Same.

Index: gcc/testsuite/gcc.dg/Walloca-7.c
===================================================================
--- gcc/testsuite/gcc.dg/Walloca-7.c (revision 246278)
+++ gcc/testsuite/gcc.dg/Walloca-7.c (working copy)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 /* { dg-options "-Walloca -O0" } */
 
 extern void f(void *);
Index: gcc/testsuite/gcc.dg/Walloca-12.c
===================================================================
--- gcc/testsuite/gcc.dg/Walloca-12.c (revision 246278)
+++ gcc/testsuite/gcc.dg/Walloca-12.c (working copy)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 /* { dg-options "-Walloca-larger-than=128 -O2" } */
 
 void f (void*);
Index: gcc/testsuite/gcc.dg/attr-alloc_size-8.c
===================================================================
--- gcc/testsuite/gcc.dg/attr-alloc_size-8.c (revision 246278)
+++ gcc/testsuite/gcc.dg/attr-alloc_size-8.c (working copy)
@@ -3,6 +3,7 @@
    -Wvla-larger-than, and -Walloc-size-larger-than options.  The former
    two more specific options override the more general latter option.  */
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 /* { dg-options "-O2 -Walloc-size-larger-than=123 -Walloca-larger-than=234 -Wvla-larger-than=345" } */
 
 #define SIZE_MAX   __SIZE_MAX__
Index: gcc/testsuite/gcc.dg/Walloca-4.c
===================================================================
--- gcc/testsuite/gcc.dg/Walloca-4.c (revision 246278)
+++ gcc/testsuite/gcc.dg/Walloca-4.c (working copy)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 /* { dg-options "-Walloca-larger-than=5000 -O2" } */
 
  char *
Index: gcc/testsuite/gcc.dg/Walloca-8.c
===================================================================
--- gcc/testsuite/gcc.dg/Walloca-8.c (revision 246278)
+++ gcc/testsuite/gcc.dg/Walloca-8.c (working copy)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 /* { dg-options "-Walloca-larger-than=2000 -O2" } */
 
 void *p;
Index: gcc/testsuite/gcc.dg/Walloca-13.c
===================================================================
--- gcc/testsuite/gcc.dg/Walloca-13.c (revision 246278)
+++ gcc/testsuite/gcc.dg/Walloca-13.c (working copy)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 /* { dg-options "-Walloca-larger-than=100 -O2" } */
 
 void f (void*);
Index: gcc/testsuite/gcc.dg/attr-alloc_size-9.c
===================================================================
--- gcc/testsuite/gcc.dg/attr-alloc_size-9.c (revision 246278)
+++ gcc/testsuite/gcc.dg/attr-alloc_size-9.c (working copy)
@@ -3,6 +3,7 @@
    with attribute malloc.  This means that the pointer they return
    can be assumed not to alias any other valid pointer.  */
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 /* { dg-options "-O2 -fdump-tree-optimized" } */
 
 void sink (void*);
Index: gcc/testsuite/gcc.dg/Walloca-1.c
===================================================================
--- gcc/testsuite/gcc.dg/Walloca-1.c (revision 246278)
+++ gcc/testsuite/gcc.dg/Walloca-1.c (working copy)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 /* { dg-options "-Walloca-larger-than=2000 -O2" } */
 
 #define alloca __builtin_alloca
Index: gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-3.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-3.c (revision 246278)
+++ gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-3.c (working copy)
@@ -4,6 +4,7 @@
    -O2 (-ftree-vrp) is necessary for the tests involving ranges to pass,
    otherwise -O1 is sufficient.
    { dg-do compile }
+   { dg-require-effective-target alloca }
    { dg-options "-O2 -Wformat -Wformat-overflow=1 -ftrack-macro-expansion=0" } */
 
 typedef __SIZE_TYPE__ size_t;
Index: gcc/testsuite/gcc.dg/Walloca-5.c
===================================================================
--- gcc/testsuite/gcc.dg/Walloca-5.c (revision 246278)
+++ gcc/testsuite/gcc.dg/Walloca-5.c (working copy)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 /* { dg-options "-Walloca-larger-than=123 -O2" } */
 /* { dg-xfail-if "Currently broken but Andrew's work should fix this" { *-*-* } } */
 
Index: gcc/testsuite/gcc.dg/Walloca-10.c
===================================================================
--- gcc/testsuite/gcc.dg/Walloca-10.c (revision 246278)
+++ gcc/testsuite/gcc.dg/Walloca-10.c (working copy)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 /* { dg-options "-Walloca-larger-than=2000 -O2" } */
 
 // Test when the conditionals are incorrectly reversed.
Index: gcc/testsuite/gcc.dg/Walloca-9.c
===================================================================
--- gcc/testsuite/gcc.dg/Walloca-9.c (revision 246278)
+++ gcc/testsuite/gcc.dg/Walloca-9.c (working copy)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 /* { dg-options "-Walloca-larger-than=5000 -O2" } */
 
 extern void useit(char *);
Index: gcc/testsuite/gcc.dg/attr-alloc_size-6.c
===================================================================
--- gcc/testsuite/gcc.dg/attr-alloc_size-6.c (revision 246278)
+++ gcc/testsuite/gcc.dg/attr-alloc_size-6.c (working copy)
@@ -4,6 +4,7 @@
    to allocate objects in excess of the number of bytes specified by
    -Walloc-larger-than=maximum.  */
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 /* { dg-options "-O0 -Wall -Walloc-size-larger-than=12345" } */
 
 #define MAXOBJSZ  12345
Index: gcc/testsuite/gcc.dg/Wvla-larger-than-1.c
===================================================================
--- gcc/testsuite/gcc.dg/Wvla-larger-than-1.c (revision 246278)
+++ gcc/testsuite/gcc.dg/Wvla-larger-than-1.c (working copy)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 /* { dg-options "-Wvla-larger-than=100 -O2" } */
 
 typedef __SIZE_TYPE__ size_t;
Index: gcc/testsuite/gcc.dg/torture/pr71881.c
===================================================================
--- gcc/testsuite/gcc.dg/torture/pr71881.c (revision 246278)
+++ gcc/testsuite/gcc.dg/torture/pr71881.c (working copy)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 /* { dg-additional-options "-g" } */
 
 int a, b, c, d, *e, f, g;
Index: gcc/testsuite/gcc.dg/torture/pr71901.c
===================================================================
--- gcc/testsuite/gcc.dg/torture/pr71901.c (revision 246278)
+++ gcc/testsuite/gcc.dg/torture/pr71901.c (working copy)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 
 typedef struct { int _mp_size; } mpz_t[1];
 int a, b;
Index: gcc/testsuite/gcc.dg/torture/pr78742.c
===================================================================
--- gcc/testsuite/gcc.dg/torture/pr78742.c (revision 246278)
+++ gcc/testsuite/gcc.dg/torture/pr78742.c (working copy)
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target int128 } */
+/* { dg-require-effective-target alloca } */
 
 void foo();
 
Index: gcc/testsuite/gcc.dg/builtin-alloc-size.c
===================================================================
--- gcc/testsuite/gcc.dg/builtin-alloc-size.c (revision 246278)
+++ gcc/testsuite/gcc.dg/builtin-alloc-size.c (working copy)
@@ -3,6 +3,7 @@
    attribute alloc_size that __builtin_object_size can make use of (or
    are treated as if they were for that purpose)..
    { dg-do compile }
+   { dg-require-effective-target alloca }
    { dg-additional-options "-O2 -fdump-tree-optimized" } */
 
 void sink (void*);
Index: gcc/testsuite/gcc.dg/Walloca-2.c
===================================================================
--- gcc/testsuite/gcc.dg/Walloca-2.c (revision 246278)
+++ gcc/testsuite/gcc.dg/Walloca-2.c (working copy)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 /* { dg-options "-Walloca-larger-than=2000 -O2" } */
 
 void f (void *);
Index: gcc/testsuite/gcc.dg/Walloca-6.c
===================================================================
--- gcc/testsuite/gcc.dg/Walloca-6.c (revision 246278)
+++ gcc/testsuite/gcc.dg/Walloca-6.c (working copy)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 /* { dg-options "-Walloca-larger-than=256 -O2" } */
 /* { dg-xfail-if "Currently broken but Andrew's work should fix this" { *-*-* } } */
 
Index: gcc/testsuite/gcc.dg/Walloca-11.c
===================================================================
--- gcc/testsuite/gcc.dg/Walloca-11.c (revision 246278)
+++ gcc/testsuite/gcc.dg/Walloca-11.c (working copy)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 /* { dg-options "-Walloca -O2" } */
 
 // Make sure we don't warn on VLA with -Walloca.
Index: gcc/testsuite/gcc.dg/attr-alloc_size-7.c
===================================================================
--- gcc/testsuite/gcc.dg/attr-alloc_size-7.c (revision 246278)
+++ gcc/testsuite/gcc.dg/attr-alloc_size-7.c (working copy)
@@ -3,6 +3,7 @@
    detect and diagnose calls that attemnpt to allocate objects in excess
    of the maximum specified by -Walloc-size-larger-than=maximum.  */
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 /* { dg-options "-O2 -Wall -Walloc-size-larger-than=12345" } */
 
 #define SIZE_MAX   __SIZE_MAX__
Index: gcc/testsuite/gcc.dg/Wvla-larger-than-2.c
===================================================================
--- gcc/testsuite/gcc.dg/Wvla-larger-than-2.c (revision 246278)
+++ gcc/testsuite/gcc.dg/Wvla-larger-than-2.c (working copy)
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target stdint_types } */
+/* { dg-require-effective-target alloca } */
 /* { dg-options "-O2 -Wvla-larger-than=40" } */
 
 #include <stdint.h>
Index: gcc/testsuite/gcc.dg/Walloca-3.c
===================================================================
--- gcc/testsuite/gcc.dg/Walloca-3.c (revision 246278)
+++ gcc/testsuite/gcc.dg/Walloca-3.c (working copy)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 /* { dg-options "-Walloca-larger-than=2000 -O2" } */
 
 void f (void *);
Index: gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c
===================================================================
--- gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c (revision 246278)
+++ gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c (working copy)
@@ -1,5 +1,6 @@
 /* PR c/7652 */
 /* { dg-do compile } */
+/* { dg-require-effective-target alloca } */
 /* { dg-options "-Wimplicit-fallthrough" } */
 
 extern void bar (int);
Index: gcc/testsuite/gcc.c-torture/compile/pr79413.c
===================================================================
--- gcc/testsuite/gcc.c-torture/compile/pr79413.c (revision 246278)
+++ gcc/testsuite/gcc.c-torture/compile/pr79413.c (working copy)
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target alloca } */
 /* PR c/79413 */
 
 void
Index: gcc/testsuite/gcc.c-torture/compile/pr78439.c
===================================================================
--- gcc/testsuite/gcc.c-torture/compile/pr78439.c (revision 246278)
+++ gcc/testsuite/gcc.c-torture/compile/pr78439.c (working copy)
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target alloca } */
 /* PR target/78439.  */
 
 enum demangle_component_type

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
  2017-03-23 15:46 [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite Tom de Vries
@ 2017-03-23 16:24 ` Thomas Schwinge
  2017-03-23 16:51   ` Tom de Vries
  2017-03-23 17:45 ` Mike Stump
  2017-03-28  8:51 ` Thomas Schwinge
  2 siblings, 1 reply; 21+ messages in thread
From: Thomas Schwinge @ 2017-03-23 16:24 UTC (permalink / raw)
  To: Tom de Vries; +Cc: GCC Patches

Hi Tom!

On Thu, 23 Mar 2017 16:46:19 +0100, Tom de Vries <Tom_deVries@mentor.com> wrote:
> I've run the gcc testsuite for target nvptx-none and ran into "test for 
> excess errors" FAILs due to:
> ...
> sorry, unimplemented: target cannot support alloca.
> ...
> 
> This patch marks those testcases as requiring alloca.

Thanks!

> OK for trunk for stage1?

Wouldn't this be good "as obvious" for trunk, right now?  (Or are there
any potential worries?)

> 2017-03-23  Tom de Vries  <tom@codesourcery.com>

"PR testsuite/80092", I suppose?

> 	* gcc.dg/Walloca-7.c: Add dg-require-effective-target alloca.
> 	* gcc.dg/Walloca-12.c: Same.
> 	* gcc.dg/attr-alloc_size-8.c: Same.
> 	* gcc.dg/Walloca-4.c: Same.
> 	* gcc.dg/Walloca-8.c: Same.
> 	* gcc.dg/Walloca-13.c: Same.
> 	* gcc.dg/attr-alloc_size-9.c: Same.
> 	* gcc.dg/Walloca-1.c: Same.
> 	* gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Same.
> 	* gcc.dg/Walloca-5.c: Same.
> 	* gcc.dg/Walloca-10.c: Same.
> 	* gcc.dg/Walloca-9.c: Same.
> 	* gcc.dg/attr-alloc_size-6.c: Same.
> 	* gcc.dg/Wvla-larger-than-1.c: Same.
> 	* gcc.dg/torture/pr71881.c: Same.
> 	* gcc.dg/torture/pr71901.c: Same.
> 	* gcc.dg/torture/pr78742.c: Same.
> 	* gcc.dg/builtin-alloc-size.c: Same.
> 	* gcc.dg/Walloca-2.c: Same.
> 	* gcc.dg/Walloca-6.c: Same.
> 	* gcc.dg/Walloca-11.c: Same.
> 	* gcc.dg/attr-alloc_size-7.c: Same.
> 	* gcc.dg/Wvla-larger-than-2.c: Same.
> 	* gcc.dg/Walloca-3.c: Same.
> 	* c-c++-common/Wimplicit-fallthrough-7.c: Same.
> 	* gcc.c-torture/compile/pr79413.c: Same.
> 	* gcc.c-torture/compile/pr78439.c: Same.


Grüße
 Thomas

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
  2017-03-23 16:24 ` Thomas Schwinge
@ 2017-03-23 16:51   ` Tom de Vries
  0 siblings, 0 replies; 21+ messages in thread
From: Tom de Vries @ 2017-03-23 16:51 UTC (permalink / raw)
  To: Thomas Schwinge; +Cc: GCC Patches

On 23/03/17 17:24, Thomas Schwinge wrote:
> Hi Tom!
>
> On Thu, 23 Mar 2017 16:46:19 +0100, Tom de Vries <Tom_deVries@mentor.com> wrote:
>> I've run the gcc testsuite for target nvptx-none and ran into "test for
>> excess errors" FAILs due to:
>> ...
>> sorry, unimplemented: target cannot support alloca.
>> ...
>>
>> This patch marks those testcases as requiring alloca.
>
> Thanks!
>
>> OK for trunk for stage1?
>
> Wouldn't this be good "as obvious" for trunk, right now?  (Or are there
> any potential worries?)
>

I suppose you're right we could classify this as obvious.

I'm not sure about "right now" though, given that we're in stage4 and 
this is neither a regression fix nor a documentation fix.

Thanks,
- Tom

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
  2017-03-23 15:46 [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite Tom de Vries
  2017-03-23 16:24 ` Thomas Schwinge
@ 2017-03-23 17:45 ` Mike Stump
  2017-03-24  7:46   ` Tom de Vries
  2017-03-28  8:51 ` Thomas Schwinge
  2 siblings, 1 reply; 21+ messages in thread
From: Mike Stump @ 2017-03-23 17:45 UTC (permalink / raw)
  To: Tom de Vries; +Cc: GCC Patches

On Mar 23, 2017, at 8:46 AM, Tom de Vries <Tom_deVries@mentor.com> wrote:
> 
> I've run the gcc testsuite for target nvptx-none and ran into "test for excess errors" FAILs due to:
> ...
> sorry, unimplemented: target cannot support alloca.

We'd encourage ports to support alloca.  :-)

> OK for trunk for stage1?

Ok.  Ok for release branches and trunk as well, if you want.  I'd recommend trunk, if your port is meant to work and test out nicely in gcc 7.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
  2017-03-23 17:45 ` Mike Stump
@ 2017-03-24  7:46   ` Tom de Vries
  2017-03-24 12:43     ` Rainer Orth
  0 siblings, 1 reply; 21+ messages in thread
From: Tom de Vries @ 2017-03-24  7:46 UTC (permalink / raw)
  To: Mike Stump; +Cc: GCC Patches

[-- Attachment #1: Type: text/plain, Size: 667 bytes --]

On 23/03/17 18:25, Mike Stump wrote:
> On Mar 23, 2017, at 8:46 AM, Tom de Vries <Tom_deVries@mentor.com> wrote:
>>
>> I've run the gcc testsuite for target nvptx-none and ran into "test for excess errors" FAILs due to:
>> ...
>> sorry, unimplemented: target cannot support alloca.
>
> We'd encourage ports to support alloca.  :-)
>
>> OK for trunk for stage1?
>
> Ok.  Ok for release branches and trunk as well, if you want.  I'd recommend trunk, if your port is meant to work and test out nicely in gcc 7.
>

Committed to trunk.

Likewise, committed these 3 patches for effective target keywords 
nonlocal_goto, indirect_jump and global_constructor.

Thanks,
- Tom

[-- Attachment #2: 0002-Require-effective-target-nonlocal_goto-in-pr79244.c.patch --]
[-- Type: text/x-patch, Size: 624 bytes --]

Require effective target nonlocal_goto in pr79244.c

2017-03-23  Tom de Vries  <tom@codesourcery.com>

	PR testsuite/80092
	* gcc.dg/torture/pr79244.c: Add dg-require-effective-target
	nonlocal_goto.

---
 gcc/testsuite/gcc.dg/torture/pr79244.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gcc/testsuite/gcc.dg/torture/pr79244.c b/gcc/testsuite/gcc.dg/torture/pr79244.c
index 05143cd..3f983c0 100644
--- a/gcc/testsuite/gcc.dg/torture/pr79244.c
+++ b/gcc/testsuite/gcc.dg/torture/pr79244.c
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target nonlocal_goto } */
 
 long buf[5];
 int bar (void);

[-- Attachment #3: 0003-Require-effective-target-indirect_jump-in-Wimplicit-fallthrough-34.c.patch --]
[-- Type: text/x-patch, Size: 773 bytes --]

Require effective target indirect_jump in Wimplicit-fallthrough-34.c

2017-03-23  Tom de Vries  <tom@codesourcery.com>

	PR testsuite/80092
	* c-c++-common/Wimplicit-fallthrough-34.c: Add
	dg-require-effective-target indirect_jumps.

---
 gcc/testsuite/c-c++-common/Wimplicit-fallthrough-34.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-34.c b/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-34.c
index 9168c52..e0b5350 100644
--- a/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-34.c
+++ b/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-34.c
@@ -1,5 +1,6 @@
 /* PR c/77946 */
 /* { dg-do compile } */
+/* { dg-require-effective-target indirect_jumps } */
 /* { dg-options "-Wimplicit-fallthrough" } */
 
 void

[-- Attachment #4: 0004-Require-effective-target-global_constructor-for-two-testcases.patch --]
[-- Type: text/x-patch, Size: 1398 bytes --]

Require effective target global_constructor for two testcases

2017-03-23  Tom de Vries  <tom@codesourcery.com>

	PR testsuite/80092
	* gcc.dg/no_profile_instrument_function-attr-1.c: Add
	dg-require-effective-target global_constructor.
	* gcc.dg/tls/emutls-2.c: Same.

---
 gcc/testsuite/gcc.dg/no_profile_instrument_function-attr-1.c | 1 +
 gcc/testsuite/gcc.dg/tls/emutls-2.c                          | 1 +
 2 files changed, 2 insertions(+)

diff --git a/gcc/testsuite/gcc.dg/no_profile_instrument_function-attr-1.c b/gcc/testsuite/gcc.dg/no_profile_instrument_function-attr-1.c
index f7afb34..0f04fb1 100644
--- a/gcc/testsuite/gcc.dg/no_profile_instrument_function-attr-1.c
+++ b/gcc/testsuite/gcc.dg/no_profile_instrument_function-attr-1.c
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target global_constructor } */
 /* { dg-options "-O2 -fprofile-generate -fprofile-update=single -fdump-tree-optimized" } */
 
 __attribute__ ((no_profile_instrument_function))
diff --git a/gcc/testsuite/gcc.dg/tls/emutls-2.c b/gcc/testsuite/gcc.dg/tls/emutls-2.c
index 1e26d5f..3b94dc7 100644
--- a/gcc/testsuite/gcc.dg/tls/emutls-2.c
+++ b/gcc/testsuite/gcc.dg/tls/emutls-2.c
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target tls } */
+/* { dg-require-effective-target global_constructor } */
 /* { dg-options "-O2" } */
 
 /* With emulated TLS, the constructor generated during IPA

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
  2017-03-24  7:46   ` Tom de Vries
@ 2017-03-24 12:43     ` Rainer Orth
  2017-03-24 12:44       ` Richard Biener
  2017-03-27 13:11       ` Tom de Vries
  0 siblings, 2 replies; 21+ messages in thread
From: Rainer Orth @ 2017-03-24 12:43 UTC (permalink / raw)
  To: Tom de Vries; +Cc: Mike Stump, GCC Patches

[-- Attachment #1: Type: text/plain, Size: 1962 bytes --]

Hi Tom,

> On 23/03/17 18:25, Mike Stump wrote:
>> On Mar 23, 2017, at 8:46 AM, Tom de Vries <Tom_deVries@mentor.com> wrote:
>>>
>>> I've run the gcc testsuite for target nvptx-none and ran into "test for
>>> excess errors" FAILs due to:
>>> ...
>>> sorry, unimplemented: target cannot support alloca.
>>
>> We'd encourage ports to support alloca.  :-)
>>
>>> OK for trunk for stage1?
>>
>> Ok.  Ok for release branches and trunk as well, if you want.  I'd
>> recommend trunk, if your port is meant to work and test out nicely in gcc
>> 7.
>>
>
> Committed to trunk.

seems you didn't properly test this patchset.  It caused

+FAIL: c-c++-common/Wimplicit-fallthrough-7.c  -std=gnu++11  (test for warnings,
 line 24)
+FAIL: c-c++-common/Wimplicit-fallthrough-7.c  -std=gnu++11  (test for warnings,
 line 34)
+FAIL: c-c++-common/Wimplicit-fallthrough-7.c  -std=gnu++11 (test for excess err
ors)
+FAIL: c-c++-common/Wimplicit-fallthrough-7.c  -std=gnu++14  (test for warnings,
 line 24)
+FAIL: c-c++-common/Wimplicit-fallthrough-7.c  -std=gnu++14  (test for warnings,
 line 34)
+FAIL: c-c++-common/Wimplicit-fallthrough-7.c  -std=gnu++14 (test for excess err
ors)
+FAIL: c-c++-common/Wimplicit-fallthrough-7.c  -std=gnu++98  (test for warnings,
 line 24)
+FAIL: c-c++-common/Wimplicit-fallthrough-7.c  -std=gnu++98  (test for warnings,
 line 34)
+FAIL: c-c++-common/Wimplicit-fallthrough-7.c  -std=gnu++98 (test for excess err
ors)

everywhere.  Adding that dg-require-effective-target line requires
adjusting dg-warning etc. line numbers.

Fixed as follows, installed on mainline after checking with the
appropriate runtest invocations (for c and c++) on x86_64-pc-linux-gnu.

	Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University


2017-03-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* c-c++-common/Wimplicit-fallthrough-7.c: Adjust dg-warning line
	numbers.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: testsuite-Wimplicit-fallthrough-7.patch --]
[-- Type: text/x-patch, Size: 1273 bytes --]

# HG changeset patch
# Parent  288df338f490e514591c89d11734d7de56f62460
Adjust c-c++-common/Wimplicit-fallthrough-7.c line numbers

diff --git a/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c b/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c
--- a/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c
+++ b/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c
@@ -21,8 +21,8 @@ f (int i)
   switch (i)
     {
     case 1:
-      { /* { dg-warning "statement may fall through" "" { target c } 23 } */
-	int a[i]; /* { dg-warning "statement may fall through" "" { target c++ } 24 } */
+      { /* { dg-warning "statement may fall through" "" { target c } 24 } */
+	int a[i]; /* { dg-warning "statement may fall through" "" { target c++ } 25 } */
       }
     case 2:
       bar (99);
@@ -31,8 +31,8 @@ f (int i)
   switch (i)
     {
     case 1:
-      for (int j = 0; j < 10; j++) /* { dg-warning "statement may fall through" "" { target c } 33 } */
-	map[j] = j; /* { dg-warning "statement may fall through" "" { target c++ } 34 } */
+      for (int j = 0; j < 10; j++) /* { dg-warning "statement may fall through" "" { target c } 34 } */
+	map[j] = j; /* { dg-warning "statement may fall through" "" { target c++ } 35 } */
     case 2:
       bar (99);
     }

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
  2017-03-24 12:43     ` Rainer Orth
@ 2017-03-24 12:44       ` Richard Biener
  2017-03-24 12:53         ` Rainer Orth
  2017-03-27 13:11       ` Tom de Vries
  1 sibling, 1 reply; 21+ messages in thread
From: Richard Biener @ 2017-03-24 12:44 UTC (permalink / raw)
  To: Rainer Orth; +Cc: Tom de Vries, Mike Stump, GCC Patches

On Fri, Mar 24, 2017 at 1:38 PM, Rainer Orth
<ro@cebitec.uni-bielefeld.de> wrote:
> Hi Tom,
>
>> On 23/03/17 18:25, Mike Stump wrote:
>>> On Mar 23, 2017, at 8:46 AM, Tom de Vries <Tom_deVries@mentor.com> wrote:
>>>>
>>>> I've run the gcc testsuite for target nvptx-none and ran into "test for
>>>> excess errors" FAILs due to:
>>>> ...
>>>> sorry, unimplemented: target cannot support alloca.
>>>
>>> We'd encourage ports to support alloca.  :-)
>>>
>>>> OK for trunk for stage1?
>>>
>>> Ok.  Ok for release branches and trunk as well, if you want.  I'd
>>> recommend trunk, if your port is meant to work and test out nicely in gcc
>>> 7.
>>>
>>
>> Committed to trunk.
>
> seems you didn't properly test this patchset.  It caused
>
> +FAIL: c-c++-common/Wimplicit-fallthrough-7.c  -std=gnu++11  (test for warnings,
>  line 24)
> +FAIL: c-c++-common/Wimplicit-fallthrough-7.c  -std=gnu++11  (test for warnings,
>  line 34)
> +FAIL: c-c++-common/Wimplicit-fallthrough-7.c  -std=gnu++11 (test for excess err
> ors)
> +FAIL: c-c++-common/Wimplicit-fallthrough-7.c  -std=gnu++14  (test for warnings,
>  line 24)
> +FAIL: c-c++-common/Wimplicit-fallthrough-7.c  -std=gnu++14  (test for warnings,
>  line 34)
> +FAIL: c-c++-common/Wimplicit-fallthrough-7.c  -std=gnu++14 (test for excess err
> ors)
> +FAIL: c-c++-common/Wimplicit-fallthrough-7.c  -std=gnu++98  (test for warnings,
>  line 24)
> +FAIL: c-c++-common/Wimplicit-fallthrough-7.c  -std=gnu++98  (test for warnings,
>  line 34)
> +FAIL: c-c++-common/Wimplicit-fallthrough-7.c  -std=gnu++98 (test for excess err
> ors)
>
> everywhere.  Adding that dg-require-effective-target line requires
> adjusting dg-warning etc. line numbers.
>
> Fixed as follows, installed on mainline after checking with the
> appropriate runtest invocations (for c and c++) on x86_64-pc-linux-gnu.

Similar

-m64
FAIL: gcc.dg/Walloca-2.c note (test for warnings, line 38)
FAIL: gcc.dg/Wvla-larger-than-2.c note (test for warnings, line 25)

-m32
FAIL: gcc.dg/Walloca-1.c  (test for warnings, line 26)
FAIL: gcc.dg/Walloca-1.c (test for excess errors)
FAIL: gcc.dg/Walloca-2.c  (test for warnings, line 38)
FAIL: gcc.dg/Walloca-2.c (test for excess errors)
FAIL: gcc.dg/Wvla-larger-than-2.c note (test for warnings, line 25)


>         Rainer
>
> --
> -----------------------------------------------------------------------------
> Rainer Orth, Center for Biotechnology, Bielefeld University
>
>
> 2017-03-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
>
>         * c-c++-common/Wimplicit-fallthrough-7.c: Adjust dg-warning line
>         numbers.
>

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
  2017-03-24 12:44       ` Richard Biener
@ 2017-03-24 12:53         ` Rainer Orth
  2017-03-24 13:04           ` Rainer Orth
  0 siblings, 1 reply; 21+ messages in thread
From: Rainer Orth @ 2017-03-24 12:53 UTC (permalink / raw)
  To: Richard Biener; +Cc: Tom de Vries, Mike Stump, GCC Patches

Hi Richard,

> Similar
>
> -m64
> FAIL: gcc.dg/Walloca-2.c note (test for warnings, line 38)
> FAIL: gcc.dg/Wvla-larger-than-2.c note (test for warnings, line 25)
>
> -m32
> FAIL: gcc.dg/Walloca-1.c  (test for warnings, line 26)
> FAIL: gcc.dg/Walloca-1.c (test for excess errors)
> FAIL: gcc.dg/Walloca-2.c  (test for warnings, line 38)
> FAIL: gcc.dg/Walloca-2.c (test for excess errors)
> FAIL: gcc.dg/Wvla-larger-than-2.c note (test for warnings, line 25)

right, just noticed that myself.  Fix in progress...

	Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
  2017-03-24 12:53         ` Rainer Orth
@ 2017-03-24 13:04           ` Rainer Orth
  2017-03-24 17:45             ` Mike Stump
  0 siblings, 1 reply; 21+ messages in thread
From: Rainer Orth @ 2017-03-24 13:04 UTC (permalink / raw)
  To: Richard Biener; +Cc: Tom de Vries, Mike Stump, GCC Patches

[-- Attachment #1: Type: text/plain, Size: 977 bytes --]

Hi Richard,

>> Similar
>>
>> -m64
>> FAIL: gcc.dg/Walloca-2.c note (test for warnings, line 38)
>> FAIL: gcc.dg/Wvla-larger-than-2.c note (test for warnings, line 25)
>>
>> -m32
>> FAIL: gcc.dg/Walloca-1.c  (test for warnings, line 26)
>> FAIL: gcc.dg/Walloca-1.c (test for excess errors)
>> FAIL: gcc.dg/Walloca-2.c  (test for warnings, line 38)
>> FAIL: gcc.dg/Walloca-2.c (test for excess errors)
>> FAIL: gcc.dg/Wvla-larger-than-2.c note (test for warnings, line 25)
>
> right, just noticed that myself.  Fix in progress...

here's what I committed after similar testing.

	Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University


2017-03-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* c-c++-common/Wimplicit-fallthrough-7.c: Adjust dg-warning
	etc. line numbers.
	* gcc.dg/Walloca-1.c: Likewise.
	* gcc.dg/Walloca-2.c: Likewise.
	* gcc.dg/Wvla-larger-than-2.c: Likewise.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: testsuite-Wimplicit-fallthrough-7.patch --]
[-- Type: text/x-patch, Size: 3123 bytes --]

# HG changeset patch
# Parent  288df338f490e514591c89d11734d7de56f62460
Adjust c-c++-common/Wimplicit-fallthrough-7.c line numbers

diff --git a/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c b/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c
--- a/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c
+++ b/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c
@@ -21,8 +21,8 @@ f (int i)
   switch (i)
     {
     case 1:
-      { /* { dg-warning "statement may fall through" "" { target c } 23 } */
-	int a[i]; /* { dg-warning "statement may fall through" "" { target c++ } 24 } */
+      { /* { dg-warning "statement may fall through" "" { target c } 24 } */
+	int a[i]; /* { dg-warning "statement may fall through" "" { target c++ } 25 } */
       }
     case 2:
       bar (99);
@@ -31,8 +31,8 @@ f (int i)
   switch (i)
     {
     case 1:
-      for (int j = 0; j < 10; j++) /* { dg-warning "statement may fall through" "" { target c } 33 } */
-	map[j] = j; /* { dg-warning "statement may fall through" "" { target c++ } 34 } */
+      for (int j = 0; j < 10; j++) /* { dg-warning "statement may fall through" "" { target c } 34 } */
+	map[j] = j; /* { dg-warning "statement may fall through" "" { target c++ } 35 } */
     case 2:
       bar (99);
     }
diff --git a/gcc/testsuite/gcc.dg/Walloca-1.c b/gcc/testsuite/gcc.dg/Walloca-1.c
--- a/gcc/testsuite/gcc.dg/Walloca-1.c
+++ b/gcc/testsuite/gcc.dg/Walloca-1.c
@@ -25,7 +25,7 @@ void foo1 (size_t len, size_t len2, size
   useit (s);			// OK, constant argument to alloca
 
   s = alloca (num);		// { dg-warning "large due to conversion" "" { target lp64 } }
-  // { dg-warning "unbounded use of 'alloca'" "" { target { ! lp64 } } 26 }
+  // { dg-warning "unbounded use of 'alloca'" "" { target { ! lp64 } } 27 }
   useit (s);
 
   s = alloca (30000);		/* { dg-warning "is too large" } */
diff --git a/gcc/testsuite/gcc.dg/Walloca-2.c b/gcc/testsuite/gcc.dg/Walloca-2.c
--- a/gcc/testsuite/gcc.dg/Walloca-2.c
+++ b/gcc/testsuite/gcc.dg/Walloca-2.c
@@ -37,8 +37,8 @@ g3 (int n)
   if (n > 0 && n < 3000)
     {
       p = __builtin_alloca (n); // { dg-warning "'alloca' may be too large" "" { target lp64} }
-      // { dg-message "note:.*argument may be as large as 2999" "note" { target lp64 } 38 }
-      // { dg-warning "unbounded use of 'alloca'" "" { target { ! lp64 } } 38 }
+      // { dg-message "note:.*argument may be as large as 2999" "note" { target lp64 } 39 }
+      // { dg-warning "unbounded use of 'alloca'" "" { target { ! lp64 } } 39 }
     }
   else
     p = __builtin_malloc (n);
diff --git a/gcc/testsuite/gcc.dg/Wvla-larger-than-2.c b/gcc/testsuite/gcc.dg/Wvla-larger-than-2.c
--- a/gcc/testsuite/gcc.dg/Wvla-larger-than-2.c
+++ b/gcc/testsuite/gcc.dg/Wvla-larger-than-2.c
@@ -24,7 +24,7 @@ f2 (__SIZE_TYPE__ a)
     {
       // 11 * 4 bytes = 44: Not OK.
       uint32_t x[a]; // { dg-warning "array may be too large" }
-      // { dg-message "note:.*argument may be as large as 44" "note" { target *-*-* } 25 }
+      // { dg-message "note:.*argument may be as large as 44" "note" { target *-*-* } 26 }
       f0 (x);
     }
 }

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
  2017-03-24 13:04           ` Rainer Orth
@ 2017-03-24 17:45             ` Mike Stump
  2017-03-27 14:14               ` Tom de Vries
  0 siblings, 1 reply; 21+ messages in thread
From: Mike Stump @ 2017-03-24 17:45 UTC (permalink / raw)
  To: Rainer Orth; +Cc: Richard Biener, Tom de Vries, GCC Patches

On Mar 24, 2017, at 5:58 AM, Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> wrote:
> -      { /* { dg-warning "statement may fall through" "" { target c } 23 } */
> -	int a[i]; /* { dg-warning "statement may fall through" "" { target c++ } 24 } */
> +      { /* { dg-warning "statement may fall through" "" { target c } 24 } */
> +	int a[i]; /* { dg-warning "statement may fall through" "" { target c++ } 25 } */

Any reason to not use relative line numbers?  See testsuite/gcc.dg/dg-test-1.c for a template for how to do it.  I think they should work and be better.  Indeed, all line numbers should be relative, generally speaking.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
  2017-03-24 12:43     ` Rainer Orth
  2017-03-24 12:44       ` Richard Biener
@ 2017-03-27 13:11       ` Tom de Vries
  1 sibling, 0 replies; 21+ messages in thread
From: Tom de Vries @ 2017-03-27 13:11 UTC (permalink / raw)
  To: Rainer Orth; +Cc: Mike Stump, GCC Patches, Richard Biener

On 24/03/17 13:38, Rainer Orth wrote:
> Hi Tom,
>
>> On 23/03/17 18:25, Mike Stump wrote:
>>> On Mar 23, 2017, at 8:46 AM, Tom de Vries <Tom_deVries@mentor.com> wrote:
>>>> I've run the gcc testsuite for target nvptx-none and ran into "test for
>>>> excess errors" FAILs due to:
>>>> ...
>>>> sorry, unimplemented: target cannot support alloca.
>>> We'd encourage ports to support alloca.  :-)
>>>
>>>> OK for trunk for stage1?
>>> Ok.  Ok for release branches and trunk as well, if you want.  I'd
>>> recommend trunk, if your port is meant to work and test out nicely in gcc
>>> 7.
>>>
>> Committed to trunk.
> seems you didn't properly test this patchset.

Sorry, indeed I just tested the non-alloca target, but forgot the alloca 
target.

Thanks for cleaning up the mess.

- Tom

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
  2017-03-24 17:45             ` Mike Stump
@ 2017-03-27 14:14               ` Tom de Vries
       [not found]                 ` <d453445e-54be-d3b5-cc27-d73bdbcc855d@mentor.com>
  0 siblings, 1 reply; 21+ messages in thread
From: Tom de Vries @ 2017-03-27 14:14 UTC (permalink / raw)
  To: Mike Stump, Rainer Orth; +Cc: Richard Biener, GCC Patches

On 24/03/17 18:13, Mike Stump wrote:
> On Mar 24, 2017, at 5:58 AM, Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> wrote:
>> -      { /* { dg-warning "statement may fall through" "" { target c } 23 } */
>> -	int a[i]; /* { dg-warning "statement may fall through" "" { target c++ } 24 } */
>> +      { /* { dg-warning "statement may fall through" "" { target c } 24 } */
>> +	int a[i]; /* { dg-warning "statement may fall through" "" { target c++ } 25 } */
>
> Any reason to not use relative line numbers?  See testsuite/gcc.dg/dg-test-1.c for a template for how to do it.  I think they should work and be better.  Indeed, all line numbers should be relative, generally speaking.
>

FYI, I've written a script to convert all tests to relative line 
numbers. See PR80221 - "Contrib script to rewrite testcase from absolute 
to relative line numbers" ( 
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80221 ).

Thanks,
- Tom

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
  2017-03-23 15:46 [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite Tom de Vries
  2017-03-23 16:24 ` Thomas Schwinge
  2017-03-23 17:45 ` Mike Stump
@ 2017-03-28  8:51 ` Thomas Schwinge
  2017-03-28  8:57   ` Tom de Vries
  2 siblings, 1 reply; 21+ messages in thread
From: Thomas Schwinge @ 2017-03-28  8:51 UTC (permalink / raw)
  To: Tom de Vries, GCC Patches

Hi!

On Thu, 23 Mar 2017 16:46:19 +0100, Tom de Vries <Tom_deVries@mentor.com> wrote:
> I've run the gcc testsuite for target nvptx-none and ran into "test for 
> excess errors" FAILs due to:
> ...
> sorry, unimplemented: target cannot support alloca.
> ...
> 
> This patch marks those testcases as requiring alloca.

I observed that this test case:

> --- gcc/testsuite/gcc.dg/torture/pr71881.c (revision 246278)
> +++ gcc/testsuite/gcc.dg/torture/pr71881.c (working copy)
> @@ -1,4 +1,5 @@
>  /* { dg-do compile } */
> +/* { dg-require-effective-target alloca } */
>  /* { dg-additional-options "-g" } */

... as well as this test case:

> --- gcc/testsuite/gcc.c-torture/compile/pr79413.c (revision 246278)
> +++ gcc/testsuite/gcc.c-torture/compile/pr79413.c (working copy)
> @@ -1,3 +1,4 @@
> +/* { dg-require-effective-target alloca } */
>  /* PR c/79413 */

... previously did PASS for anything but "-O0" (that is, any "alloca"
usage got optimized away).  Now changed as follows:

    [-FAIL:-]{+UNSUPPORTED:+} gcc.c-torture/compile/pr79413.c   -O0  [-(test for excess errors)-]
    [-PASS:-]{+UNSUPPORTED:+} gcc.c-torture/compile/pr79413.c   -O1  [-(test for excess errors)-]
    [-PASS:-]{+UNSUPPORTED:+} gcc.c-torture/compile/pr79413.c   -O2  [-(test for excess errors)-]
    [-PASS:-]{+UNSUPPORTED:+} gcc.c-torture/compile/pr79413.c   -O3 -g  [-(test for excess errors)-]
    [-PASS:-]{+UNSUPPORTED:+} gcc.c-torture/compile/pr79413.c   -Os  [-(test for excess errors)-]

    [-FAIL:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c   -O0  [-(test for excess errors)-]
    [-PASS:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c   -O1  [-(test for excess errors)-]
    [-PASS:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c   -O2  [-(test for excess errors)-]
    [-PASS:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c   -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions  [-(test for excess errors)-]
    [-PASS:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c   -O3 -g  [-(test for excess errors)-]
    [-PASS:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c   -Os  [-(test for excess errors)-]

Would it be useful to XFAIL these for "-O0" only (along with a comment),
so that we continue testing that any "alloca" usage gets optimized away?
(Just an idea.)


Grüße
 Thomas

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
  2017-03-28  8:51 ` Thomas Schwinge
@ 2017-03-28  8:57   ` Tom de Vries
  0 siblings, 0 replies; 21+ messages in thread
From: Tom de Vries @ 2017-03-28  8:57 UTC (permalink / raw)
  To: Thomas Schwinge, GCC Patches

On 28/03/17 10:23, Thomas Schwinge wrote:
> Hi!
>
> On Thu, 23 Mar 2017 16:46:19 +0100, Tom de Vries <Tom_deVries@mentor.com> wrote:
>> I've run the gcc testsuite for target nvptx-none and ran into "test for
>> excess errors" FAILs due to:
>> ...
>> sorry, unimplemented: target cannot support alloca.
>> ...
>>
>> This patch marks those testcases as requiring alloca.
>
> I observed that this test case:
>
>> --- gcc/testsuite/gcc.dg/torture/pr71881.c (revision 246278)
>> +++ gcc/testsuite/gcc.dg/torture/pr71881.c (working copy)
>> @@ -1,4 +1,5 @@
>>  /* { dg-do compile } */
>> +/* { dg-require-effective-target alloca } */
>>  /* { dg-additional-options "-g" } */
>
> ... as well as this test case:
>
>> --- gcc/testsuite/gcc.c-torture/compile/pr79413.c (revision 246278)
>> +++ gcc/testsuite/gcc.c-torture/compile/pr79413.c (working copy)
>> @@ -1,3 +1,4 @@
>> +/* { dg-require-effective-target alloca } */
>>  /* PR c/79413 */
>
> ... previously did PASS for anything but "-O0" (that is, any "alloca"
> usage got optimized away).  Now changed as follows:
>
>     [-FAIL:-]{+UNSUPPORTED:+} gcc.c-torture/compile/pr79413.c   -O0  [-(test for excess errors)-]
>     [-PASS:-]{+UNSUPPORTED:+} gcc.c-torture/compile/pr79413.c   -O1  [-(test for excess errors)-]
>     [-PASS:-]{+UNSUPPORTED:+} gcc.c-torture/compile/pr79413.c   -O2  [-(test for excess errors)-]
>     [-PASS:-]{+UNSUPPORTED:+} gcc.c-torture/compile/pr79413.c   -O3 -g  [-(test for excess errors)-]
>     [-PASS:-]{+UNSUPPORTED:+} gcc.c-torture/compile/pr79413.c   -Os  [-(test for excess errors)-]
>
>     [-FAIL:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c   -O0  [-(test for excess errors)-]
>     [-PASS:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c   -O1  [-(test for excess errors)-]
>     [-PASS:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c   -O2  [-(test for excess errors)-]
>     [-PASS:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c   -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions  [-(test for excess errors)-]
>     [-PASS:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c   -O3 -g  [-(test for excess errors)-]
>     [-PASS:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c   -Os  [-(test for excess errors)-]
>
> Would it be useful to XFAIL these for "-O0" only (along with a comment),
> so that we continue testing that any "alloca" usage gets optimized away?
> (Just an idea.)

I'd say that makes sense for test-cases which have the purpose of 
testing whether alloca is optimized away at certain optimization levels, 
but not for random test cases.

Thanks,
- Tom

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
       [not found]                 ` <d453445e-54be-d3b5-cc27-d73bdbcc855d@mentor.com>
@ 2017-04-26 12:40                   ` Tom de Vries
  2017-04-26 12:50                     ` Jakub Jelinek
  0 siblings, 1 reply; 21+ messages in thread
From: Tom de Vries @ 2017-04-26 12:40 UTC (permalink / raw)
  To: Mike Stump, Rainer Orth; +Cc: Richard Biener, GCC Patches

[ reposting with patch removed, was too big for gcc-patches@ ]

On 04/26/2017 01:33 PM, Tom de Vries wrote:
> On 03/27/2017 03:11 PM, Tom de Vries wrote:
>> On 24/03/17 18:13, Mike Stump wrote:
>>> On Mar 24, 2017, at 5:58 AM, Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
>>> wrote:
>>>> -      { /* { dg-warning "statement may fall through" "" { target c }
>>>> 23 } */
>>>> -    int a[i]; /* { dg-warning "statement may fall through" "" {
>>>> target c++ } 24 } */
>>>> +      { /* { dg-warning "statement may fall through" "" { target c }
>>>> 24 } */
>>>> +    int a[i]; /* { dg-warning "statement may fall through" "" {
>>>> target c++ } 25 } */
>>>
>>> Any reason to not use relative line numbers?  See
>>> testsuite/gcc.dg/dg-test-1.c for a template for how to do it.  I think
>>> they should work and be better.  Indeed, all line numbers should be
>>> relative, generally speaking.
>>>
>>
>> FYI, I've written a script to convert all tests to relative line
>> numbers. See PR80221 - "Contrib script to rewrite testcase from absolute
>> to relative line numbers" (
>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80221 ).
>
> A more restrictive version of that script (posted at
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80221#c13 ) rewrites a line
> from absolute to relative linenumber if:
> - the relative line number is '.-1', '.' or '.+1', or
> - it's adjacent to a line we will rewrite (with the line numbers being
>   consecutive)
>
> Committed.
>
> Thanks,
> - Tom
>
> 0001-Use-relative-line-number-for-subsequent-dg-directives.patch
>
>
> Use relative line number for subsequent dg directives
>
> 2017-04-19  Tom de Vries  <tom@codesourcery.com>
>
> 	PR testsuite/80221
> 	* c-c++-common/Wimplicit-fallthrough-6.c: Use relative line number for
> 	subsequent dg directives.
> 	* c-c++-common/Wimplicit-fallthrough-7.c: Same.
> 	* c-c++-common/Wint-to-pointer-cast-3.c: Same.
> 	* c-c++-common/attr-fallthrough-2.c: Same.
> 	* c-c++-common/cilk-plus/AN/parser_errors2.c: Same.
> 	* c-c++-common/cilk-plus/AN/parser_errors3.c: Same.
> 	* c-c++-common/cilk-plus/AN/pr61191.c: Same.
> 	* c-c++-common/cilk-plus/AN/pr61963.c: Same.
> 	* c-c++-common/cilk-plus/AN/pr62008.c: Same.
> 	* c-c++-common/cilk-plus/AN/rank_mismatch.c: Same.
> 	* c-c++-common/cilk-plus/CK/cilk_for_errors.c: Same.
> 	* c-c++-common/cilk-plus/CK/errors.c: Same.
> 	* c-c++-common/cilk-plus/CK/no_args_error.c: Same.
> 	* c-c++-common/cilk-plus/PS/clauses1.c: Same.
> 	* c-c++-common/cilk-plus/SE/vlength_errors.c: Same.
> 	* c-c++-common/cpp/pr57580.c: Same.
> 	* c-c++-common/goacc/asyncwait-1.c: Same.
> 	* c-c++-common/goacc/cache-2.c: Same.
> 	* c-c++-common/goacc/declare-2.c: Same.
> 	* c-c++-common/goacc/deviceptr-1.c: Same.
> 	* c-c++-common/goacc/routine-5.c: Same.
> 	* c-c++-common/gomp/clauses-2.c: Same.
> 	* c-c++-common/gomp/ordered-3.c: Same.
> 	* c-c++-common/gomp/pr67501.c: Same.
> 	* c-c++-common/pr20000.c: Same.
> 	* c-c++-common/pr43395.c: Same.
> 	* c-c++-common/pr49706.c: Same.
> 	* c-c++-common/pr77624-1.c: Same.
> 	* c-c++-common/pr77624-2.c: Same.
> 	* c-c++-common/raw-string-14.c: Same.
> 	* c-c++-common/raw-string-16.c: Same.
> 	* c-c++-common/raw-string-3.c: Same.
> 	* c-c++-common/raw-string-4.c: Same.
> 	* c-c++-common/raw-string-5.c: Same.
> 	* c-c++-common/raw-string-6.c: Same.
> 	* g++.dg/abi/mangle41.C: Same.
> 	* g++.dg/conversion/nullptr1.C: Same.
> 	* g++.dg/cpp0x/alias-decl-80296.C: Same.
> 	* g++.dg/cpp0x/auto27.C: Same.
> 	* g++.dg/cpp0x/constexpr-98.C: Same.
> 	* g++.dg/cpp0x/constexpr-diag2.C: Same.
> 	* g++.dg/cpp0x/diag2.C: Same.
> 	* g++.dg/cpp0x/lambda/lambda-syntax1.C: Same.
> 	* g++.dg/cpp0x/nullptr15.C: Same.
> 	* g++.dg/cpp0x/pr31431-2.C: Same.
> 	* g++.dg/cpp0x/pr31431.C: Same.
> 	* g++.dg/cpp0x/pr79118.C: Same.
> 	* g++.dg/cpp0x/static_assert3.C: Same.
> 	* g++.dg/cpp0x/temp_default2.C: Same.
> 	* g++.dg/cpp0x/trailing4.C: Same.
> 	* g++.dg/cpp0x/variadic-ex10.C: Same.
> 	* g++.dg/cpp0x/variadic-ex13.C: Same.
> 	* g++.dg/cpp0x/variadic-ex14.C: Same.
> 	* g++.dg/cpp0x/variadic-ex3.C: Same.
> 	* g++.dg/cpp0x/variadic-ex4.C: Same.
> 	* g++.dg/cpp0x/variadic59.C: Same.
> 	* g++.dg/cpp0x/vt-37737-2.C: Same.
> 	* g++.dg/cpp0x/vt-57397-1.C: Same.
> 	* g++.dg/cpp0x/vt-57397-2.C: Same.
> 	* g++.dg/cpp1z/constexpr-lambda8.C: Same.
> 	* g++.dg/cpp1z/gen-attrs1.C: Same.
> 	* g++.dg/diagnostic/pr71075.C: Same.
> 	* g++.dg/eh/goto2.C: Same.
> 	* g++.dg/eh/goto3.C: Same.
> 	* g++.dg/expr/bitfield4.C: Same.
> 	* g++.dg/expr/bitfield5.C: Same.
> 	* g++.dg/expr/bitfield6.C: Same.
> 	* g++.dg/expr/bool1.C: Same.
> 	* g++.dg/expr/bool3.C: Same.
> 	* g++.dg/expr/cond10.C: Same.
> 	* g++.dg/expr/cond11.C: Same.
> 	* g++.dg/expr/lval3.C: Same.
> 	* g++.dg/expr/lval4.C: Same.
> 	* g++.dg/ext/anon-struct4.C: Same.
> 	* g++.dg/ext/attrib44.C: Same.
> 	* g++.dg/ext/builtin3.C: Same.
> 	* g++.dg/ext/dllimport7.C: Same.
> 	* g++.dg/ext/label5.C: Same.
> 	* g++.dg/ext/no-asm-1.C: Same.
> 	* g++.dg/ext/utf16-4.C: Same.
> 	* g++.dg/ext/vla2.C: Same.
> 	* g++.dg/gomp/block-1.C: Same.
> 	* g++.dg/gomp/block-2.C: Same.
> 	* g++.dg/gomp/block-3.C: Same.
> 	* g++.dg/gomp/block-5.C: Same.
> 	* g++.dg/gomp/linear-2.C: Same.
> 	* g++.dg/gomp/target-1.C: Same.
> 	* g++.dg/gomp/target-2.C: Same.
> 	* g++.dg/gomp/taskgroup-1.C: Same.
> 	* g++.dg/gomp/teams-1.C: Same.
> 	* g++.dg/inherit/pure1.C: Same.
> 	* g++.dg/init/array43.C: Same.
> 	* g++.dg/init/array46.C: Same.
> 	* g++.dg/init/const10.C: Same.
> 	* g++.dg/init/ctor4-1.C: Same.
> 	* g++.dg/init/ctor4.C: Same.
> 	* g++.dg/init/new37.C: Same.
> 	* g++.dg/init/pr25811.C: Same.
> 	* g++.dg/init/pr29043.C: Same.
> 	* g++.dg/init/pr29571.C: Same.
> 	* g++.dg/lookup/duperr1.C: Same.
> 	* g++.dg/lookup/error1.C: Same.
> 	* g++.dg/lookup/koenig5.C: Same.
> 	* g++.dg/lookup/pr77549.C: Same.
> 	* g++.dg/lookup/suggestions1.C: Same.
> 	* g++.dg/lookup/using16.C: Same.
> 	* g++.dg/lookup/using7.C: Same.
> 	* g++.dg/other/anon-union3.C: Same.
> 	* g++.dg/other/array2.C: Same.
> 	* g++.dg/other/error13.C: Same.
> 	* g++.dg/other/error34.C: Same.
> 	* g++.dg/overload/builtin1.C: Same.
> 	* g++.dg/overload/conv-op1.C: Same.
> 	* g++.dg/overload/error3.C: Same.
> 	* g++.dg/overload/koenig1.C: Same.
> 	* g++.dg/overload/operator5.C: Same.
> 	* g++.dg/overload/template5.C: Same.
> 	* g++.dg/overload/unknown1.C: Same.
> 	* g++.dg/overload/using2.C: Same.
> 	* g++.dg/parse/constructor1.C: Same.
> 	* g++.dg/parse/crash36.C: Same.
> 	* g++.dg/parse/crash63.C: Same.
> 	* g++.dg/parse/error11.C: Same.
> 	* g++.dg/parse/error12.C: Same.
> 	* g++.dg/parse/error14.C: Same.
> 	* g++.dg/parse/error2.C: Same.
> 	* g++.dg/parse/error21.C: Same.
> 	* g++.dg/parse/error26.C: Same.
> 	* g++.dg/parse/error36.C: Same.
> 	* g++.dg/parse/friend12.C: Same.
> 	* g++.dg/parse/invalid-op1.C: Same.
> 	* g++.dg/parse/missing-template1.C: Same.
> 	* g++.dg/parse/parser-pr28152-2.C: Same.
> 	* g++.dg/parse/parser-pr28152.C: Same.
> 	* g++.dg/parse/pr16696-permissive.C: Same.
> 	* g++.dg/parse/pr16696.C: Same.
> 	* g++.dg/parse/pr69628.C: Same.
> 	* g++.dg/parse/ret-type2.C: Same.
> 	* g++.dg/parse/specialization1.C: Same.
> 	* g++.dg/parse/template3.C: Same.
> 	* g++.dg/parse/template9.C: Same.
> 	* g++.dg/parse/typename11.C: Same.
> 	* g++.dg/plugin/attribute_plugin-test-1.C: Same.
> 	* g++.dg/pr45330.C: Same.
> 	* g++.dg/rtti/typeid6.C: Same.
> 	* g++.dg/spellcheck-fields.C: Same.
> 	* g++.dg/spellcheck-typenames.C: Same.
> 	* g++.dg/tc1/dr108.C: Same.
> 	* g++.dg/tc1/dr147.C: Same.
> 	* g++.dg/template/arg7.C: Same.
> 	* g++.dg/template/conv11.C: Same.
> 	* g++.dg/template/crash13.C: Same.
> 	* g++.dg/template/crash55.C: Same.
> 	* g++.dg/template/dependent-expr5.C: Same.
> 	* g++.dg/template/error17.C: Same.
> 	* g++.dg/template/error33.C: Same.
> 	* g++.dg/template/error4.C: Same.
> 	* g++.dg/template/error50.C: Same.
> 	* g++.dg/template/error53.C: Same.
> 	* g++.dg/template/friend.C: Same.
> 	* g++.dg/template/func2.C: Same.
> 	* g++.dg/template/local6.C: Same.
> 	* g++.dg/template/member5.C: Same.
> 	* g++.dg/template/meminit1.C: Same.
> 	* g++.dg/template/nested3.C: Same.
> 	* g++.dg/template/nontype6.C: Same.
> 	* g++.dg/template/overload12.C: Same.
> 	* g++.dg/template/ptrmem8.C: Same.
> 	* g++.dg/template/qualified-id1.C: Same.
> 	* g++.dg/template/spec15.C: Same.
> 	* g++.dg/template/static1.C: Same.
> 	* g++.dg/template/static10.C: Same.
> 	* g++.dg/template/static2.C: Same.
> 	* g++.dg/template/ttp25.C: Same.
> 	* g++.dg/template/typedef2.C: Same.
> 	* g++.dg/template/typename2.C: Same.
> 	* g++.dg/template/unify10.C: Same.
> 	* g++.dg/template/unify6.C: Same.
> 	* g++.dg/template/unify7.C: Same.
> 	* g++.dg/template/unify9.C: Same.
> 	* g++.dg/template/varmod1.C: Same.
> 	* g++.dg/ubsan/div-by-zero-1.C: Same.
> 	* g++.dg/ubsan/pr63956.C: Same.
> 	* g++.dg/warn/Waddress-1.C: Same.
> 	* g++.dg/warn/Wconversion2.C: Same.
> 	* g++.dg/warn/Wnull-conversion-1.C: Same.
> 	* g++.dg/warn/Wsubobject-linkage-1.C: Same.
> 	* g++.dg/warn/Wsubobject-linkage-3.C: Same.
> 	* g++.dg/warn/Wswitch-1.C: Same.
> 	* g++.dg/warn/Wtype-limits-Wextra.C: Same.
> 	* g++.dg/warn/Wtype-limits.C: Same.
> 	* g++.dg/warn/Wunused-parm-5.C: Same.
> 	* g++.dg/warn/deprecated-6.C: Same.
> 	* g++.dg/warn/deprecated.C: Same.
> 	* g++.dg/warn/incomplete1.C: Same.
> 	* g++.dg/warn/multiple-overflow-warn-1.C: Same.
> 	* g++.dg/warn/multiple-overflow-warn-2.C: Same.
> 	* g++.dg/warn/multiple-overflow-warn-3.C: Same.
> 	* g++.dg/warn/overflow-warn-1.C: Same.
> 	* g++.dg/warn/overflow-warn-3.C: Same.
> 	* g++.dg/warn/overflow-warn-4.C: Same.
> 	* g++.dg/warn/pr12242.C: Same.
> 	* g++.dg/warn/pr30551-2.C: Same.
> 	* g++.dg/warn/pr30551.C: Same.
> 	* g++.old-deja/g++.benjamin/16077.C: Same.
> 	* g++.old-deja/g++.bob/inherit1.C: Same.
> 	* g++.old-deja/g++.brendan/crash56.C: Same.
> 	* g++.old-deja/g++.brendan/template17.C: Same.
> 	* g++.old-deja/g++.eh/ctor1.C: Same.
> 	* g++.old-deja/g++.jason/bool5.C: Same.
> 	* g++.old-deja/g++.jason/cond.C: Same.
> 	* g++.old-deja/g++.jason/operator.C: Same.
> 	* g++.old-deja/g++.jason/pmf5.C: Same.
> 	* g++.old-deja/g++.law/ctors5.C: Same.
> 	* g++.old-deja/g++.law/missed-error2.C: Same.
> 	* g++.old-deja/g++.law/operators9.C: Same.
> 	* g++.old-deja/g++.law/temps1.C: Same.
> 	* g++.old-deja/g++.mike/for2.C: Same.
> 	* g++.old-deja/g++.mike/ns5.C: Same.
> 	* g++.old-deja/g++.mike/ns7.C: Same.
> 	* g++.old-deja/g++.mike/p10769b.C: Same.
> 	* g++.old-deja/g++.niklas/t120.C: Same.
> 	* g++.old-deja/g++.niklas/t121.C: Same.
> 	* g++.old-deja/g++.ns/koenig5.C: Same.
> 	* g++.old-deja/g++.oliva/overload1.C: Same.
> 	* g++.old-deja/g++.other/crash24.C: Same.
> 	* g++.old-deja/g++.other/crash25.C: Same.
> 	* g++.old-deja/g++.other/decl5.C: Same.
> 	* g++.old-deja/g++.other/lineno5.C: Same.
> 	* g++.old-deja/g++.other/null3.C: Same.
> 	* g++.old-deja/g++.other/overcnv2.C: Same.
> 	* g++.old-deja/g++.other/ptrmem7.C: Same.
> 	* g++.old-deja/g++.other/typename1.C: Same.
> 	* g++.old-deja/g++.other/vaarg3.C: Same.
> 	* g++.old-deja/g++.pt/crash10.C: Same.
> 	* g++.old-deja/g++.pt/crash28.C: Same.
> 	* g++.old-deja/g++.pt/crash38.C: Same.
> 	* g++.old-deja/g++.pt/explicit70.C: Same.
> 	* g++.old-deja/g++.pt/explicit77.C: Same.
> 	* g++.old-deja/g++.pt/expr2.C: Same.
> 	* g++.old-deja/g++.pt/spec5.C: Same.
> 	* g++.old-deja/g++.pt/spec6.C: Same.
> 	* g++.old-deja/g++.pt/typename3.C: Same.
> 	* g++.old-deja/g++.pt/typename5.C: Same.
> 	* g++.old-deja/g++.pt/typename6.C: Same.
> 	* g++.old-deja/g++.pt/typename7.C: Same.
> 	* g++.old-deja/g++.pt/unify4.C: Same.
> 	* g++.old-deja/g++.pt/unify8.C: Same.
> 	* g++.old-deja/g++.pt/vaarg3.C: Same.
> 	* g++.old-deja/g++.robertl/eb22.C: Same.
> 	* g++.old-deja/g++.robertl/eb4.C: Same.
> 	* g++.old-deja/g++.robertl/eb44.C: Same.
> 	* g++.old-deja/g++.robertl/eb69.C: Same.
> 	* g++.old-deja/g++.robertl/eb98.C: Same.
> 	* gcc.dg/20031223-1.c: Same.
> 	* gcc.dg/940510-1.c: Same.
> 	* gcc.dg/990506-0.c: Same.
> 	* gcc.dg/Walloca-1.c: Same.
> 	* gcc.dg/Walloca-2.c: Same.
> 	* gcc.dg/Wconversion-integer.c: Same.
> 	* gcc.dg/Wcxx-compat-8.c: Same.
> 	* gcc.dg/Wimplicit-int-1.c: Same.
> 	* gcc.dg/Wimplicit-int-2.c: Same.
> 	* gcc.dg/Wimplicit-int-4.c: Same.
> 	* gcc.dg/Wpointer-sign-Wall.c: Same.
> 	* gcc.dg/Wpointer-sign-pedantic.c: Same.
> 	* gcc.dg/Wshadow-1.c: Same.
> 	* gcc.dg/Wshadow-3.c: Same.
> 	* gcc.dg/Wswitch-enum-error.c: Same.
> 	* gcc.dg/Wswitch-enum.c: Same.
> 	* gcc.dg/Wswitch-error.c: Same.
> 	* gcc.dg/Wswitch.c: Same.
> 	* gcc.dg/Wtype-limits-Wextra.c: Same.
> 	* gcc.dg/Wtype-limits.c: Same.
> 	* gcc.dg/Wvla-larger-than-2.c: Same.
> 	* gcc.dg/anon-struct-5.c: Same.
> 	* gcc.dg/array-10.c: Same.
> 	* gcc.dg/array-11.c: Same.
> 	* gcc.dg/array-15.c: Same.
> 	* gcc.dg/array-2.c: Same.
> 	* gcc.dg/array-8.c: Same.
> 	* gcc.dg/array-const-2.c: Same.
> 	* gcc.dg/array-const-3.c: Same.
> 	* gcc.dg/bitfld-1.c: Same.
> 	* gcc.dg/bitfld-8.c: Same.
> 	* gcc.dg/builtin-redefine.c: Same.
> 	* gcc.dg/c11-noreturn-1.c: Same.
> 	* gcc.dg/c11-noreturn-2.c: Same.
> 	* gcc.dg/c11-static-assert-3.c: Same.
> 	* gcc.dg/c90-arraydecl-1.c: Same.
> 	* gcc.dg/c90-complex-1.c: Same.
> 	* gcc.dg/c90-complit-1.c: Same.
> 	* gcc.dg/c90-const-expr-11.c: Same.
> 	* gcc.dg/c90-const-expr-7.c: Same.
> 	* gcc.dg/c90-const-expr-8.c: Same.
> 	* gcc.dg/c90-enum-comma-1.c: Same.
> 	* gcc.dg/c90-flex-array-1.c: Same.
> 	* gcc.dg/c90-hexfloat-1.c: Same.
> 	* gcc.dg/c90-idem-qual-1.c: Same.
> 	* gcc.dg/c90-idem-qual-2.c: Same.
> 	* gcc.dg/c90-idem-qual-3.c: Same.
> 	* gcc.dg/c90-mixdecl-1.c: Same.
> 	* gcc.dg/c90-restrict-1.c: Same.
> 	* gcc.dg/c90-return-1.c: Same.
> 	* gcc.dg/c99-array-nonobj-1.c: Same.
> 	* gcc.dg/c99-arraydecl-1.c: Same.
> 	* gcc.dg/c99-complex-1.c: Same.
> 	* gcc.dg/c99-complex-2.c: Same.
> 	* gcc.dg/c99-complit-2.c: Same.
> 	* gcc.dg/c99-const-expr-7.c: Same.
> 	* gcc.dg/c99-const-expr-8.c: Same.
> 	* gcc.dg/c99-flex-array-3.c: Same.
> 	* gcc.dg/c99-flex-array-7.c: Same.
> 	* gcc.dg/c99-flex-array-typedef-7.c: Same.
> 	* gcc.dg/c99-impl-decl-1.c: Same.
> 	* gcc.dg/c99-impl-int-1.c: Same.
> 	* gcc.dg/c99-impl-int-2.c: Same.
> 	* gcc.dg/c99-init-3.c: Same.
> 	* gcc.dg/c99-restrict-1.c: Same.
> 	* gcc.dg/c99-return-1.c: Same.
> 	* gcc.dg/c99-tag-1.c: Same.
> 	* gcc.dg/c99-tag-3.c: Same.
> 	* gcc.dg/call-diag-2.c: Same.
> 	* gcc.dg/cpp/19940712-1.c: Same.
> 	* gcc.dg/cpp/19951025-1.c: Same.
> 	* gcc.dg/cpp/19990413-1.c: Same.
> 	* gcc.dg/cpp/direct2.c: Same.
> 	* gcc.dg/cpp/direct2s.c: Same.
> 	* gcc.dg/cpp/pr28709.c: Same.
> 	* gcc.dg/cpp/pr61854-c90.c: Same.
> 	* gcc.dg/cpp/pr61854-c94.c: Same.
> 	* gcc.dg/cpp/pragma-1.c: Same.
> 	* gcc.dg/cpp/pragma-2.c: Same.
> 	* gcc.dg/cpp/trad/escaped-eof.c: Same.
> 	* gcc.dg/cpp/trad/literals-2.c: Same.
> 	* gcc.dg/cpp/warn-comments-2.c: Same.
> 	* gcc.dg/cpp/warn-comments-3.c: Same.
> 	* gcc.dg/cpp/warn-comments.c: Same.
> 	* gcc.dg/cpp/warn-long-long-2.c: Same.
> 	* gcc.dg/cpp/warn-long-long.c: Same.
> 	* gcc.dg/cpp/warn-redefined-2.c: Same.
> 	* gcc.dg/cpp/warn-redefined.c: Same.
> 	* gcc.dg/darwin-cfstring-2.c: Same.
> 	* gcc.dg/darwin-cfstring-format-1.c: Same.
> 	* gcc.dg/decl-9.c: Same.
> 	* gcc.dg/declspec-1.c: Same.
> 	* gcc.dg/declspec-10.c: Same.
> 	* gcc.dg/declspec-11.c: Same.
> 	* gcc.dg/declspec-13.c: Same.
> 	* gcc.dg/declspec-18.c: Same.
> 	* gcc.dg/declspec-4.c: Same.
> 	* gcc.dg/declspec-5.c: Same.
> 	* gcc.dg/declspec-6.c: Same.
> 	* gcc.dg/declspec-8.c: Same.
> 	* gcc.dg/deprecated-4.c: Same.
> 	* gcc.dg/deprecated.c: Same.
> 	* gcc.dg/dfp/composite-type.c: Same.
> 	* gcc.dg/empty-source-2.c: Same.
> 	* gcc.dg/empty-source-3.c: Same.
> 	* gcc.dg/format/attr-6.c: Same.
> 	* gcc.dg/format/branch-1.c: Same.
> 	* gcc.dg/format/c90-printf-1.c: Same.
> 	* gcc.dg/format/c90-strftime-2.c: Same.
> 	* gcc.dg/format/c99-strftime-1.c: Same.
> 	* gcc.dg/format/cmn-err-1.c: Same.
> 	* gcc.dg/format/few-1.c: Same.
> 	* gcc.dg/format/ms_branch-1.c: Same.
> 	* gcc.dg/format/ms_unnamed-1.c: Same.
> 	* gcc.dg/format/ms_va-1.c: Same.
> 	* gcc.dg/format/unnamed-1.c: Same.
> 	* gcc.dg/format/va-1.c: Same.
> 	* gcc.dg/format/xopen-1.c: Same.
> 	* gcc.dg/funcdef-var-1.c: Same.
> 	* gcc.dg/funcdef-var-2.c: Same.
> 	* gcc.dg/gnu89-const-expr-1.c: Same.
> 	* gcc.dg/gnu89-const-expr-2.c: Same.
> 	* gcc.dg/gnu90-const-expr-1.c: Same.
> 	* gcc.dg/gnu99-const-expr-1.c: Same.
> 	* gcc.dg/gnu99-const-expr-2.c: Same.
> 	* gcc.dg/gnu99-init-2.c: Same.
> 	* gcc.dg/gomp/_Atomic-5.c: Same.
> 	* gcc.dg/gomp/appendix-a/a.24.1.c: Same.
> 	* gcc.dg/gomp/atomic-5.c: Same.
> 	* gcc.dg/gomp/linear-1.c: Same.
> 	* gcc.dg/gomp/pr67500.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/init-string-1.c: Same.
> 	* gcc.dg/label-compound-stmt-1.c: Same.
> 	* gcc.dg/label-decl-2.c: Same.
> 	* gcc.dg/label-decl-4.c: Same.
> 	* gcc.dg/large-size-array-2.c: Same.
> 	* gcc.dg/large-size-array-4.c: Same.
> 	* gcc.dg/lvalue-6.c: Same.
> 	* gcc.dg/m-un-2.c: Same.
> 	* gcc.dg/multiple-overflow-warn-1.c: Same.
> 	* gcc.dg/multiple-overflow-warn-2.c: Same.
> 	* gcc.dg/multiple-overflow-warn-3.c: Same.
> 	* gcc.dg/nested-redef-1.c: Same.
> 	* gcc.dg/no-asm-1.c: Same.
> 	* gcc.dg/no-asm-3.c: Same.
> 	* gcc.dg/no-asm-4.c: Same.
> 	* gcc.dg/noncompile/20010524-1.c: Same.
> 	* gcc.dg/noncompile/incomplete-5.c: Same.
> 	* gcc.dg/noncompile/pr44517.c: Same.
> 	* gcc.dg/noncompile/pr52290.c: Same.
> 	* gcc.dg/noreturn-1.c: Same.
> 	* gcc.dg/overflow-warn-1.c: Same.
> 	* gcc.dg/overflow-warn-2.c: Same.
> 	* gcc.dg/overflow-warn-3.c: Same.
> 	* gcc.dg/overflow-warn-4.c: Same.
> 	* gcc.dg/parm-mismatch-1.c: Same.
> 	* gcc.dg/parser-pr28152-2.c: Same.
> 	* gcc.dg/parser-pr28152.c: Same.
> 	* gcc.dg/pedwarn-init.c: Same.
> 	* gcc.dg/pointer-arith-2.c: Same.
> 	* gcc.dg/pointer-arith-3.c: Same.
> 	* gcc.dg/pointer-arith-4.c: Same.
> 	* gcc.dg/pr14475.c: Same.
> 	* gcc.dg/pr18596-3.c: Same.
> 	* gcc.dg/pr18809-1.c: Same.
> 	* gcc.dg/pr27953.c: Same.
> 	* gcc.dg/pr30457.c: Same.
> 	* gcc.dg/pr30551-2.c: Same.
> 	* gcc.dg/pr30551-3.c: Same.
> 	* gcc.dg/pr30551-4.c: Same.
> 	* gcc.dg/pr30551-5.c: Same.
> 	* gcc.dg/pr30551-6.c: Same.
> 	* gcc.dg/pr30551.c: Same.
> 	* gcc.dg/pr36997.c: Same.
> 	* gcc.dg/pr41842.c: Same.
> 	* gcc.dg/pr48552-1.c: Same.
> 	* gcc.dg/pr48552-2.c: Same.
> 	* gcc.dg/pr59717.c: Same.
> 	* gcc.dg/pr61077.c: Same.
> 	* gcc.dg/pr61096-1.c: Same.
> 	* gcc.dg/pr63626.c: Same.
> 	* gcc.dg/pr64223-1.c: Same.
> 	* gcc.dg/pr64223-2.c: Same.
> 	* gcc.dg/pr8788-1.c: Same.
> 	* gcc.dg/pr8927-1.c: Same.
> 	* gcc.dg/pragma-darwin.c: Same.
> 	* gcc.dg/pragma-diag-5.c: Same.
> 	* gcc.dg/pragma-message.c: Same.
> 	* gcc.dg/redecl-1.c: Same.
> 	* gcc.dg/simd-1.c: Same.
> 	* gcc.dg/simd-5.c: Same.
> 	* gcc.dg/simd-6.c: Same.
> 	* gcc.dg/spellcheck-fields.c: Same.
> 	* gcc.dg/spellcheck-typenames.c: Same.
> 	* gcc.dg/struct-semi-2.c: Same.
> 	* gcc.dg/struct-semi-3.c: Same.
> 	* gcc.dg/transparent-union-3.c: Same.
> 	* gcc.dg/ucnid-8.c: Same.
> 	* gcc.dg/uninit-pr19430-O0.c: Same.
> 	* gcc.dg/uninit-pr19430.c: Same.
> 	* gcc.dg/uninit-pr20644-O0.c: Same.
> 	* gcc.dg/utf-dflt.c: Same.
> 	* gcc.dg/utf-dflt2.c: Same.
> 	* gcc.dg/utf16-4.c: Same.
> 	* gcc.dg/vla-11.c: Same.
> 	* gcc.dg/vla-20.c: Same.
> 	* gcc.dg/vla-init-1.c: Same.
> 	* gcc.dg/vla-init-2.c: Same.
> 	* gcc.dg/vla-init-3.c: Same.
> 	* gcc.dg/weak/weak-6.c: Same.
> 	* gcc.dg/weak/weak-7.c: Same.
> 	* gcc.dg/wtr-int-type-1.c: Same.
> 	* gcc.target/aarch64/mgeneral-regs_1.c: Same.
> 	* gcc.target/arm/polytypes.c: Same.
> 	* gcc.target/i386/spellcheck-options-4.c: Same.
> 	* gcc.target/powerpc/20030218-1.c: Same.
> 	* gcc.target/sh/pr21255-4.c: Same.
> 	* gcc.test-framework/dg-error-exp-XP.c: Same.
> 	* gfortran.dg/array_constructor_30.f03: Same.
> 	* gfortran.dg/class_30.f90: Same.
> 	* gfortran.dg/goacc/subarrays.f95: Same.
> 	* gfortran.dg/gomp/appendix-a/a.23.5.f90: Same.
> 	* gfortran.dg/gomp/appendix-a/a.24.1.f90: Same.
> 	* gfortran.dg/intrinsic_std_1.f90: Same.
> 	* gfortran.dg/pr70006.f90: Same.
> 	* gfortran.dg/warning-directive-1.F90: Same.
> 	* gfortran.dg/warning-directive-2.F90: Same.
> 	* gfortran.dg/warning-directive-3.F90: Same.
> 	* gfortran.dg/warning-directive-4.F90: Same.
> 	* obj-c++.dg/attributes/method-noreturn-1.mm: Same.
> 	* obj-c++.dg/class-extension-1.mm: Same.
> 	* obj-c++.dg/class-extension-2.mm: Same.
> 	* obj-c++.dg/class-protocol-1.mm: Same.
> 	* obj-c++.dg/cxx-ivars-1.mm: Same.
> 	* obj-c++.dg/duplicate-class-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/fsf-nsstring-format-1.mm: Same.
> 	* obj-c++.dg/fsf-package-0.m: Same.
> 	* obj-c++.dg/invalid-type-1.mm: Same.
> 	* obj-c++.dg/method-12.mm: Same.
> 	* obj-c++.dg/method-13.mm: Same.
> 	* obj-c++.dg/method-15.mm: Same.
> 	* obj-c++.dg/method-16.mm: Same.
> 	* obj-c++.dg/method-6.mm: Same.
> 	* obj-c++.dg/method-7.mm: Same.
> 	* obj-c++.dg/property/at-property-1.mm: Same.
> 	* obj-c++.dg/property/at-property-14.mm: Same.
> 	* obj-c++.dg/property/at-property-17.mm: Same.
> 	* obj-c++.dg/property/at-property-21.mm: Same.
> 	* obj-c++.dg/property/at-property-5.mm: Same.
> 	* obj-c++.dg/property/dotsyntax-4.mm: Same.
> 	* obj-c++.dg/property/dynamic-3.mm: Same.
> 	* obj-c++.dg/property/dynamic-4.mm: Same.
> 	* obj-c++.dg/property/property-neg-1.mm: Same.
> 	* obj-c++.dg/property/property-neg-6.mm: Same.
> 	* obj-c++.dg/property/synthesize-11.mm: Same.
> 	* obj-c++.dg/property/synthesize-5.mm: Same.
> 	* obj-c++.dg/property/synthesize-6.mm: Same.
> 	* obj-c++.dg/proto-lossage-4.mm: Same.
> 	* obj-c++.dg/protocol-qualifier-2.mm: Same.
> 	* obj-c++.dg/strings/strings-1.mm: Same.
> 	* obj-c++.dg/super-class-1.mm: Same.
> 	* obj-c++.dg/syntax-error-6.mm: Same.
> 	* obj-c++.dg/syntax-error-7.mm: Same.
> 	* obj-c++.dg/syntax-error-9.mm: Same.
> 	* obj-c++.dg/try-catch-13.mm: Same.
> 	* objc.dg/attributes/method-noreturn-1.m: Same.
> 	* objc.dg/bad-receiver-type-2.m: Same.
> 	* objc.dg/bad-receiver-type.m: Same.
> 	* objc.dg/call-super-2.m: Same.
> 	* objc.dg/class-2.m: Same.
> 	* objc.dg/class-extension-1.m: Same.
> 	* objc.dg/class-extension-2.m: Same.
> 	* objc.dg/class-protocol-1.m: Same.
> 	* objc.dg/desig-init-1.m: Same.
> 	* objc.dg/duplicate-class-1.m: Same.
> 	* objc.dg/exceptions-3.m: Same.
> 	* objc.dg/exceptions-4.m: Same.
> 	* objc.dg/exceptions-5.m: Same.
> 	* objc.dg/foreach-6.m: Same.
> 	* objc.dg/foreach-7.m: Same.
> 	* objc.dg/fsf-nsstring-format-1.m: Same.
> 	* objc.dg/fsf-package-0.m: Same.
> 	* objc.dg/invalid-type-1.m: Same.
> 	* objc.dg/method-11.m: Same.
> 	* objc.dg/method-19.m: Same.
> 	* objc.dg/method-2.m: Same.
> 	* objc.dg/method-20.m: Same.
> 	* objc.dg/method-5.m: Same.
> 	* objc.dg/method-6.m: Same.
> 	* objc.dg/method-7.m: Same.
> 	* objc.dg/method-9.m: Same.
> 	* objc.dg/missing-proto-3.m: Same.
> 	* objc.dg/private-1.m: Same.
> 	* objc.dg/property/at-property-1.m: Same.
> 	* objc.dg/property/at-property-14.m: Same.
> 	* objc.dg/property/at-property-17.m: Same.
> 	* objc.dg/property/at-property-21.m: Same.
> 	* objc.dg/property/at-property-5.m: Same.
> 	* objc.dg/property/dynamic-3.m: Same.
> 	* objc.dg/property/dynamic-4.m: Same.
> 	* objc.dg/property/property-neg-1.m: Same.
> 	* objc.dg/property/property-neg-6.m: Same.
> 	* objc.dg/property/synthesize-11.m: Same.
> 	* objc.dg/property/synthesize-5.m: Same.
> 	* objc.dg/property/synthesize-6.m: Same.
> 	* objc.dg/proto-hier-1.m: Same.
> 	* objc.dg/proto-lossage-4.m: Same.
> 	* objc.dg/protocol-qualifier-2.m: Same.
> 	* objc.dg/strings/strings-1.m: Same.
> 	* objc.dg/type-size-1.m: Same.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
  2017-04-26 12:40                   ` Tom de Vries
@ 2017-04-26 12:50                     ` Jakub Jelinek
  2017-04-27  9:03                       ` Tom de Vries
  2017-04-28  1:35                       ` Tom de Vries
  0 siblings, 2 replies; 21+ messages in thread
From: Jakub Jelinek @ 2017-04-26 12:50 UTC (permalink / raw)
  To: Tom de Vries; +Cc: Mike Stump, Rainer Orth, Richard Biener, GCC Patches

On Wed, Apr 26, 2017 at 01:48:03PM +0200, Tom de Vries wrote:
> [ reposting with patch removed, was too big for gcc-patches@ ]

I see in various tests you've ended up with ... { target ... } . }
I think it would be better to just use ... { target ... } }
in that case, . is the default, and if target is *-*-*, also remove the {
target ... }.

Are there any spots where the relative line number is with too big bias
(say .+10 or .-10 and more)?  I guess those should be decided case by case
whether we want relative, absolute or saved line numbers.  If the
diagnostic is within the same function or code block as the stuff it is
relative to, relative is fine, but if e.g. the messages are just at the end
of file and there are unrelated functions in between, it is not a good idea
to use relative.

	Jakub

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
  2017-04-26 12:50                     ` Jakub Jelinek
@ 2017-04-27  9:03                       ` Tom de Vries
  2017-04-28  8:23                         ` Tom de Vries
  2017-04-28 14:31                         ` Tom de Vries
  2017-04-28  1:35                       ` Tom de Vries
  1 sibling, 2 replies; 21+ messages in thread
From: Tom de Vries @ 2017-04-27  9:03 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Mike Stump, Rainer Orth, Richard Biener, GCC Patches

[-- Attachment #1: Type: text/plain, Size: 1477 bytes --]

On 04/26/2017 01:57 PM, Jakub Jelinek wrote:
> On Wed, Apr 26, 2017 at 01:48:03PM +0200, Tom de Vries wrote:
>> [ reposting with patch removed, was too big for gcc-patches@ ]
>
> I see in various tests you've ended up with ... { target ... } . }
> I think it would be better to just use ... { target ... } }
> in that case, . is the default, and if target is *-*-*, also remove the {
> target ... }.
>

I've written sed commands for both simplifications, untested patches 
attached.

[ I suppose we could drop an empty comment as the last argument as well. 
{ ... "" }. ]

> Are there any spots where the relative line number is with too big bias
> (say .+10 or .-10 and more)?

In the original patch, which rewrote all absolute line numbers, yes, it 
generated -62 ( and Mike commented on that here: 
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80221#c6 ).

In the committed patch, no. The greatest relative line number magnitude 
was 6. The script was limited to rewrite only dg directives with -1 .. 
+1 relative line number, and adjacent directives referring to the same 
line.

Thanks,
- Tom

> I guess those should be decided case by case
> whether we want relative, absolute or saved line numbers.  If the
> diagnostic is within the same function or code block as the stuff it is
> relative to, relative is fine, but if e.g. the messages are just at the end
> of file and there are unrelated functions in between, it is not a good idea
> to use relative.
>
> 	Jakub
>


[-- Attachment #2: 0001-Remove-.-relative-line-number-from-dg-directives.patch --]
[-- Type: text/x-patch, Size: 32380 bytes --]

Remove . relative line number from dg directives

find $(find -type d -name testsuite) -type f \
     | xargs sed -ri 's#(dg-(error|warning|message|bogus).*) \. #\1 #'

---
 .../c-c++-common/Wimplicit-fallthrough-6.c         | 16 +++++-----
 .../c-c++-common/Wimplicit-fallthrough-7.c         |  8 ++---
 gcc/testsuite/c-c++-common/cilk-plus/AN/pr61963.c  |  2 +-
 .../c-c++-common/cilk-plus/CK/no_args_error.c      |  2 +-
 gcc/testsuite/c-c++-common/pr20000.c               |  2 +-
 gcc/testsuite/c-c++-common/pr49706.c               |  6 ++--
 gcc/testsuite/g++.dg/ext/utf16-4.C                 |  2 +-
 gcc/testsuite/g++.dg/parse/error2.C                |  2 +-
 gcc/testsuite/g++.dg/warn/Wtype-limits-Wextra.C    |  4 +--
 gcc/testsuite/g++.dg/warn/Wtype-limits.C           |  4 +--
 gcc/testsuite/g++.dg/warn/overflow-warn-1.C        |  2 +-
 gcc/testsuite/g++.dg/warn/overflow-warn-3.C        |  2 +-
 gcc/testsuite/gcc.dg/Wpointer-sign-Wall.c          |  2 +-
 gcc/testsuite/gcc.dg/Wpointer-sign-pedantic.c      |  2 +-
 gcc/testsuite/gcc.dg/Wtype-limits-Wextra.c         |  4 +--
 gcc/testsuite/gcc.dg/Wtype-limits.c                |  4 +--
 gcc/testsuite/gcc.dg/cpp/19990413-1.c              |  2 +-
 gcc/testsuite/gcc.dg/dg-test-1.c                   |  4 +--
 gcc/testsuite/gcc.dg/empty-source-2.c              |  2 +-
 gcc/testsuite/gcc.dg/empty-source-3.c              |  2 +-
 gcc/testsuite/gcc.dg/label-decl-2.c                |  2 +-
 gcc/testsuite/gcc.dg/m-un-2.c                      |  2 +-
 .../gcc.dg/tree-ssa/builtin-sprintf-warn-1.c       | 36 +++++++++++-----------
 .../gcc.dg/tree-ssa/builtin-sprintf-warn-2.c       |  2 +-
 gcc/testsuite/gcc.dg/uninit-pr19430-O0.c           |  2 +-
 gcc/testsuite/gcc.dg/uninit-pr19430.c              |  2 +-
 gcc/testsuite/gcc.dg/uninit-pr20644-O0.c           |  4 +--
 gcc/testsuite/gcc.dg/utf16-4.c                     |  2 +-
 gcc/testsuite/gfortran.dg/pr70006.f90              |  8 ++---
 gcc/testsuite/obj-c++.dg/fsf-package-0.m           |  2 +-
 30 files changed, 68 insertions(+), 68 deletions(-)

diff --git a/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-6.c b/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-6.c
index 5b6ac30..32d5feb 100644
--- a/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-6.c
+++ b/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-6.c
@@ -117,11 +117,11 @@ L1:
   switch (i)
     {
     case 1:
-      { /* { dg-warning "statement may fall through" "" { target c } . } */
+      { /* { dg-warning "statement may fall through" "" { target c } } */
 	int j = 0;
 	bar (j);
 	if (j == 8)
-	  return; /* { dg-warning "statement may fall through" "" { target c++ } . } */
+	  return; /* { dg-warning "statement may fall through" "" { target c++ } } */
       }
     case 2:
       bar (99);
@@ -145,13 +145,13 @@ L1:
   switch (i)
     {
     case 1:
-      { /* { dg-warning "statement may fall through" "" { target c } . } */
+      { /* { dg-warning "statement may fall through" "" { target c } } */
 	int j = 0;
 	bar (j);
 	if (j == 8)
 	  bar (1);
 	else
-	  return; /* { dg-warning "statement may fall through" "" { target c++ } . } */
+	  return; /* { dg-warning "statement may fall through" "" { target c++ } } */
       }
     case 2:
       bar (99);
@@ -175,13 +175,13 @@ L1:
   switch (i)
     {
     case 1:
-      { /* { dg-warning "statement may fall through" "" { target c } . } */
+      { /* { dg-warning "statement may fall through" "" { target c } } */
 	int j = 0;
 	bar (j);
 	if (j == 8)
 	  bar (1);
 	else
-	  bar (2); /* { dg-warning "statement may fall through" "" { target c++ } . } */
+	  bar (2); /* { dg-warning "statement may fall through" "" { target c++ } } */
       }
     case 2:
       bar (99);
@@ -279,9 +279,9 @@ L1:
   switch (i)
     {
     case 1:
-      { /* { dg-warning "statement may fall through" "" { target c } . } */
+      { /* { dg-warning "statement may fall through" "" { target c } } */
 	int j = 9;
-	switch (j); /* { dg-warning "statement may fall through" "" { target c++ } . } */
+	switch (j); /* { dg-warning "statement may fall through" "" { target c++ } } */
       }
     case 2:
       bar (99);
diff --git a/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c b/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c
index df8ae35..24a573b 100644
--- a/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c
+++ b/gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c
@@ -21,8 +21,8 @@ f (int i)
   switch (i)
     {
     case 1:
-      { /* { dg-warning "statement may fall through" "" { target c } . } */
-	int a[i]; /* { dg-warning "statement may fall through" "" { target c++ } . } */
+      { /* { dg-warning "statement may fall through" "" { target c } } */
+	int a[i]; /* { dg-warning "statement may fall through" "" { target c++ } } */
       }
     case 2:
       bar (99);
@@ -31,8 +31,8 @@ f (int i)
   switch (i)
     {
     case 1:
-      for (int j = 0; j < 10; j++) /* { dg-warning "statement may fall through" "" { target c } . } */
-	map[j] = j; /* { dg-warning "statement may fall through" "" { target c++ } . } */
+      for (int j = 0; j < 10; j++) /* { dg-warning "statement may fall through" "" { target c } } */
+	map[j] = j; /* { dg-warning "statement may fall through" "" { target c++ } } */
     case 2:
       bar (99);
     }
diff --git a/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61963.c b/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61963.c
index 5f1abd9..205671a 100644
--- a/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61963.c
+++ b/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61963.c
@@ -4,6 +4,6 @@
 
 void f (int * int *a) /* { dg-error "expected" } */
 {
-    a[0:64] = 0; /* { dg-error "was not declared" "" { target c++ } . } */
+    a[0:64] = 0; /* { dg-error "was not declared" "" { target c++ } } */
     a[0:64] = 0;
 }
diff --git a/gcc/testsuite/c-c++-common/cilk-plus/CK/no_args_error.c b/gcc/testsuite/c-c++-common/cilk-plus/CK/no_args_error.c
index 990f206..a2f20d2 100644
--- a/gcc/testsuite/c-c++-common/cilk-plus/CK/no_args_error.c
+++ b/gcc/testsuite/c-c++-common/cilk-plus/CK/no_args_error.c
@@ -5,7 +5,7 @@ int spawn_1 ();
 typedef int(*func) (int);
 
 void check () {
-      func var = spawn_1; /* { dg-error "invalid conversion from" "" { target c++ } . } */
+      func var = spawn_1; /* { dg-error "invalid conversion from" "" { target c++ } } */
         _Cilk_spawn var (); /* { dg-error "too few arguments to function" } */ 
 }
 
diff --git a/gcc/testsuite/c-c++-common/pr20000.c b/gcc/testsuite/c-c++-common/pr20000.c
index 6325392..726cb0d 100644
--- a/gcc/testsuite/c-c++-common/pr20000.c
+++ b/gcc/testsuite/c-c++-common/pr20000.c
@@ -24,7 +24,7 @@ int vg(void);
 int vg2(void); /* { dg-bogus ".noreturn. function returns non-void value" } */
 
 int vg(void) {
-  return 1; /* { dg-warning "function declared 'noreturn' has a 'return' statement" "has return" { target c } . } */
+  return 1; /* { dg-warning "function declared 'noreturn' has a 'return' statement" "has return" { target c } } */
 }           /* { dg-warning "'noreturn' function does return" "does return" { target c } .-1 } */
 
 int vg2(void) {
diff --git a/gcc/testsuite/c-c++-common/pr49706.c b/gcc/testsuite/c-c++-common/pr49706.c
index 027d8bf..203fc36 100644
--- a/gcc/testsuite/c-c++-common/pr49706.c
+++ b/gcc/testsuite/c-c++-common/pr49706.c
@@ -12,13 +12,13 @@ extern bool foo_b (void);
 extern int foo_i (void);
 
 #ifdef __cplusplus
-template <class T, class U> bool tfn1(T t, U u) { return (!t == u); } /* { dg-warning "logical not is only applied to the left hand side of comparison" "" { target c++ } . } */
+template <class T, class U> bool tfn1(T t, U u) { return (!t == u); } /* { dg-warning "logical not is only applied to the left hand side of comparison" "" { target c++ } } */
 template <class T, class U> bool tfn2(T t, U u) { return ((!t) == u); }
-template <class T, class U> bool tfn3(T t, U u) { return (!g(t) == u); } /* { dg-warning "logical not is only applied to the left hand side of comparison" "" { target c++ } . } */
+template <class T, class U> bool tfn3(T t, U u) { return (!g(t) == u); } /* { dg-warning "logical not is only applied to the left hand side of comparison" "" { target c++ } } */
 template <class T, class U> bool tfn4(T t, U u) { return ((!g(t)) == u); }
 template <class T, class U> bool tfn5(T t, U u) { return (!!t == u); } /* { dg-bogus "logical not is only applied to the left hand side of comparison" } */
 template <class T, class U> bool tfn6(T t, U u) { return (!!g(t) == u); } /* { dg-bogus "logical not is only applied to the left hand side of comparison" } */
-template <int N> bool tfn7(int i1, int i2) { return (!i1 == i2); } /* { dg-warning "logical not is only applied to the left hand side of comparison" "" { target c++ } . } */
+template <int N> bool tfn7(int i1, int i2) { return (!i1 == i2); } /* { dg-warning "logical not is only applied to the left hand side of comparison" "" { target c++ } } */
 #endif
 
 void
diff --git a/gcc/testsuite/g++.dg/ext/utf16-4.C b/gcc/testsuite/g++.dg/ext/utf16-4.C
index 8ba88af..e8d6531 100644
--- a/gcc/testsuite/g++.dg/ext/utf16-4.C
+++ b/gcc/testsuite/g++.dg/ext/utf16-4.C
@@ -13,6 +13,6 @@ const static char16_t	c5 = U'\u2029';
 const static char16_t	c6 = U'\U00064321';	/* { dg-warning "implicitly truncated" } */
 const static char16_t	c7 = L'a';
 const static char16_t	c8 = L'\u2029';
-const static char16_t	c9 = L'\U00064321';	/* { dg-warning "implicitly truncated" "" { target { 4byte_wchar_t } } . } */
+const static char16_t	c9 = L'\U00064321';	/* { dg-warning "implicitly truncated" "" { target { 4byte_wchar_t } } } */
 						/* { dg-warning "constant too long" "" { target { ! 4byte_wchar_t } } .-1 } */
 int main () {}
diff --git a/gcc/testsuite/g++.dg/parse/error2.C b/gcc/testsuite/g++.dg/parse/error2.C
index 0675730..cb8f413 100644
--- a/gcc/testsuite/g++.dg/parse/error2.C
+++ b/gcc/testsuite/g++.dg/parse/error2.C
@@ -8,7 +8,7 @@ int func(double);
 template <int>
 struct Foo {};
 
-Foo<func(g)> f; // { dg-error "5:'int func.double.' cannot appear in a constant-expression" "func double" { target *-*-* } . }
+Foo<func(g)> f; // { dg-error "5:'int func.double.' cannot appear in a constant-expression" "func double" { target *-*-* } }
 // { dg-error "10:'g' cannot appear in a constant-expression" "g" { target *-*-* } .-1 }
 // { dg-error "11:a function call cannot appear in a constant-expression" "call" { target *-*-* } .-2 }
 // { dg-error "12:template argument 1 is invalid" "invalid template argument" { target *-*-* } .-3 }
diff --git a/gcc/testsuite/g++.dg/warn/Wtype-limits-Wextra.C b/gcc/testsuite/g++.dg/warn/Wtype-limits-Wextra.C
index 6470d4f..91b5c1b 100644
--- a/gcc/testsuite/g++.dg/warn/Wtype-limits-Wextra.C
+++ b/gcc/testsuite/g++.dg/warn/Wtype-limits-Wextra.C
@@ -13,7 +13,7 @@ void a (unsigned char x)
     return;
   if (255 >= x) /* { dg-warning "comparison is always true due to limited range of data type" } */
     return;
-  if ((int)x <= 255) /* { dg-bogus "comparison is always true due to limited range of data type" "" { xfail *-*-* } . } */
+  if ((int)x <= 255) /* { dg-bogus "comparison is always true due to limited range of data type" "" { xfail *-*-* } } */
     return;
   if (255 >= (unsigned char) 1)
     return;
@@ -58,7 +58,7 @@ void e (unsigned long long x)
 
 int test (int x) 
 {
-  if ((long long)x <= 0x123456789ABCLL) /* { dg-bogus "comparison is always true due to limited range of data type" "" { xfail *-*-* } . } */
+  if ((long long)x <= 0x123456789ABCLL) /* { dg-bogus "comparison is always true due to limited range of data type" "" { xfail *-*-* } } */
     return 1;
   else 
     return 0;
diff --git a/gcc/testsuite/g++.dg/warn/Wtype-limits.C b/gcc/testsuite/g++.dg/warn/Wtype-limits.C
index f585e97..c345eff 100644
--- a/gcc/testsuite/g++.dg/warn/Wtype-limits.C
+++ b/gcc/testsuite/g++.dg/warn/Wtype-limits.C
@@ -13,7 +13,7 @@ void a (unsigned char x)
     return;
   if (255 >= x) /* { dg-warning "comparison is always true due to limited range of data type" } */
     return;
-  if ((int)x <= 255) /* { dg-bogus "comparison is always true due to limited range of data type" "" { xfail *-*-* } . } */
+  if ((int)x <= 255) /* { dg-bogus "comparison is always true due to limited range of data type" "" { xfail *-*-* } } */
     return;
   if (255 >= (unsigned char) 1)
     return;
@@ -58,7 +58,7 @@ void e (unsigned long long x)
 
 int test (int x) 
 {
-  if ((long long)x <= 0x123456789ABCLL) /* { dg-bogus "comparison is always true due to limited range of data type" "" { xfail *-*-* } . } */
+  if ((long long)x <= 0x123456789ABCLL) /* { dg-bogus "comparison is always true due to limited range of data type" "" { xfail *-*-* } } */
     return 1;
   else 
     return 0;
diff --git a/gcc/testsuite/g++.dg/warn/overflow-warn-1.C b/gcc/testsuite/g++.dg/warn/overflow-warn-1.C
index b29eec34..c327cc0 100644
--- a/gcc/testsuite/g++.dg/warn/overflow-warn-1.C
+++ b/gcc/testsuite/g++.dg/warn/overflow-warn-1.C
@@ -11,7 +11,7 @@ enum e {
   E1 = UINT_MAX + 1,
   /* Overflow in an unevaluated part of an expression is OK (example
      in the standard).  */
-  E2 = 2 || 1 / 0, /* { dg-bogus "warning: division by zero" "" { xfail *-*-* } . } */
+  E2 = 2 || 1 / 0, /* { dg-bogus "warning: division by zero" "" { xfail *-*-* } } */
   E3 = 1 / 0, /* { dg-warning "division by zero" } */
   /* { dg-error "enumerator value for 'E3' is not an integer constant|not a constant.expression" "enum error" { target *-*-* } .-1 } */
   /* But as in DR#031, the 1/0 in an evaluated subexpression means the
diff --git a/gcc/testsuite/g++.dg/warn/overflow-warn-3.C b/gcc/testsuite/g++.dg/warn/overflow-warn-3.C
index a43ea5c..ff6864d 100644
--- a/gcc/testsuite/g++.dg/warn/overflow-warn-3.C
+++ b/gcc/testsuite/g++.dg/warn/overflow-warn-3.C
@@ -11,7 +11,7 @@ enum e {
   E1 = UINT_MAX + 1,
   /* Overflow in an unevaluated part of an expression is OK (example
      in the standard).  */
-  E2 = 2 || 1 / 0, /* { dg-bogus "warning: division by zero" "" { xfail *-*-* } . } */
+  E2 = 2 || 1 / 0, /* { dg-bogus "warning: division by zero" "" { xfail *-*-* } } */
   E3 = 1 / 0, /* { dg-warning "division by zero" } */
   /* { dg-error "enumerator value for 'E3' is not an integer constant|not a constant.expression" "enum error" { target *-*-* } .-1 } */
   /* But as in DR#031, the 1/0 in an evaluated subexpression means the
diff --git a/gcc/testsuite/gcc.dg/Wpointer-sign-Wall.c b/gcc/testsuite/gcc.dg/Wpointer-sign-Wall.c
index 66cc3a5..d29df30 100644
--- a/gcc/testsuite/gcc.dg/Wpointer-sign-Wall.c
+++ b/gcc/testsuite/gcc.dg/Wpointer-sign-Wall.c
@@ -2,7 +2,7 @@
 
 /* { dg-options "-Wall" } */
 
-void foo(unsigned long* ulp); /* { dg-message "note: expected '\[^\n'\]*' but argument is of type '\[^\n'\]*'" "note: expected" { target *-*-* } . } */
+void foo(unsigned long* ulp); /* { dg-message "note: expected '\[^\n'\]*' but argument is of type '\[^\n'\]*'" "note: expected" { target *-*-* } } */
 
 
 void bar(long* lp) {
diff --git a/gcc/testsuite/gcc.dg/Wpointer-sign-pedantic.c b/gcc/testsuite/gcc.dg/Wpointer-sign-pedantic.c
index 7b1eef2..aebfbdd 100644
--- a/gcc/testsuite/gcc.dg/Wpointer-sign-pedantic.c
+++ b/gcc/testsuite/gcc.dg/Wpointer-sign-pedantic.c
@@ -2,7 +2,7 @@
 
 /* { dg-options "-pedantic" } */
 
-void foo(unsigned long* ulp);/* { dg-message "note: expected '\[^'\n\]*' but argument is of type '\[^'\n\]*'" "note: expected" { target *-*-* } . } */
+void foo(unsigned long* ulp);/* { dg-message "note: expected '\[^'\n\]*' but argument is of type '\[^'\n\]*'" "note: expected" { target *-*-* } } */
 
 void bar(long* lp) {
   foo(lp); /* { dg-warning "differ in signedness" } */
diff --git a/gcc/testsuite/gcc.dg/Wtype-limits-Wextra.c b/gcc/testsuite/gcc.dg/Wtype-limits-Wextra.c
index bf08734..e5e7f94 100644
--- a/gcc/testsuite/gcc.dg/Wtype-limits-Wextra.c
+++ b/gcc/testsuite/gcc.dg/Wtype-limits-Wextra.c
@@ -13,7 +13,7 @@ void a (unsigned char x)
     return;
   if (255 >= x) /* { dg-warning "comparison is always true due to limited range of data type" } */
     return;
-  if ((int)x <= 255) /* { dg-bogus "comparison is always true due to limited range of data type" "" { xfail *-*-* } . } */
+  if ((int)x <= 255) /* { dg-bogus "comparison is always true due to limited range of data type" "" { xfail *-*-* } } */
     return;
   if (255 >= (unsigned char) 1)
     return;
@@ -61,7 +61,7 @@ void e (unsigned long long x)
 
 int test (int x) 
 {
-  if ((long long)x <= 0x123456789ABCLL) /* { dg-bogus "comparison is always true due to limited range of data type" "" { xfail *-*-* } . } */
+  if ((long long)x <= 0x123456789ABCLL) /* { dg-bogus "comparison is always true due to limited range of data type" "" { xfail *-*-* } } */
     return 1;
   else 
     return 0;
diff --git a/gcc/testsuite/gcc.dg/Wtype-limits.c b/gcc/testsuite/gcc.dg/Wtype-limits.c
index c137385..2d6f991 100644
--- a/gcc/testsuite/gcc.dg/Wtype-limits.c
+++ b/gcc/testsuite/gcc.dg/Wtype-limits.c
@@ -13,7 +13,7 @@ void a (unsigned char x)
     return;
   if (255 >= x) /* { dg-warning "comparison is always true due to limited range of data type" } */
     return;
-  if ((int)x <= 255) /* { dg-bogus "comparison is always true due to limited range of data type" "" { xfail *-*-* } . } */
+  if ((int)x <= 255) /* { dg-bogus "comparison is always true due to limited range of data type" "" { xfail *-*-* } } */
     return;
   if (255 >= (unsigned char) 1)
     return;
@@ -61,7 +61,7 @@ void e (unsigned long long x)
 
 int test (int x) 
 {
-  if ((long long)x <= 0x123456789ABCLL) /* { dg-bogus "comparison is always true due to limited range of data type" "" { xfail *-*-* } . } */
+  if ((long long)x <= 0x123456789ABCLL) /* { dg-bogus "comparison is always true due to limited range of data type" "" { xfail *-*-* } } */
     return 1;
   else 
     return 0;
diff --git a/gcc/testsuite/gcc.dg/cpp/19990413-1.c b/gcc/testsuite/gcc.dg/cpp/19990413-1.c
index 96a3d70..bcb7e52 100644
--- a/gcc/testsuite/gcc.dg/cpp/19990413-1.c
+++ b/gcc/testsuite/gcc.dg/cpp/19990413-1.c
@@ -9,5 +9,5 @@ func(void)
 {
   FOO(i
       = 4)
-  else;  /* { dg-error "'else' without a previous 'if'" "error on this line" { target *-*-* } . } */ 
+  else;  /* { dg-error "'else' without a previous 'if'" "error on this line" { target *-*-* } } */ 
 }
diff --git a/gcc/testsuite/gcc.dg/dg-test-1.c b/gcc/testsuite/gcc.dg/dg-test-1.c
index c67f93b..b4e22e2 100644
--- a/gcc/testsuite/gcc.dg/dg-test-1.c
+++ b/gcc/testsuite/gcc.dg/dg-test-1.c
@@ -5,7 +5,7 @@
 void
 foo (void)
 {			/* { dg-error "'a' undeclared" "err1" { target *-*-* } .+1 } */
-  int z = a + b + c + d;/* { dg-error "'b' undeclared" "err2" { target *-*-* } . } */
+  int z = a + b + c + d;/* { dg-error "'b' undeclared" "err2" { target *-*-* } } */
 }			/* { dg-error "'c' undeclared" "err3" { target *-*-* } .-1 } */
 
 
@@ -13,7 +13,7 @@ foo (void)
 /* { dg-warning "unused parameter 'e'" "warn1" { target *-*-* } .+3 } */
 
 void				/* { dg-warning "unused parameter 'f'" "warn2" { target *-*-* } .+1 } */
-bar (int e, int f, int g, int h)/* { dg-warning "unused parameter 'g'" "warn3" { target *-*-* } . } */
+bar (int e, int f, int g, int h)/* { dg-warning "unused parameter 'g'" "warn3" { target *-*-* } } */
 {				/* { dg-warning "unused parameter 'h'" "warn4" { target *-*-* } .-1 } */
 }
 
diff --git a/gcc/testsuite/gcc.dg/empty-source-2.c b/gcc/testsuite/gcc.dg/empty-source-2.c
index 7261fda..e0f1e20 100644
--- a/gcc/testsuite/gcc.dg/empty-source-2.c
+++ b/gcc/testsuite/gcc.dg/empty-source-2.c
@@ -3,4 +3,4 @@
 /* { dg-do compile } */
 /* { dg-options "-pedantic" } */
 
-/* { dg-warning "ISO C forbids an empty translation unit" "empty" { target *-*-* } . } */
+/* { dg-warning "ISO C forbids an empty translation unit" "empty" { target *-*-* } } */
diff --git a/gcc/testsuite/gcc.dg/empty-source-3.c b/gcc/testsuite/gcc.dg/empty-source-3.c
index 8a24860..a1e1d2c 100644
--- a/gcc/testsuite/gcc.dg/empty-source-3.c
+++ b/gcc/testsuite/gcc.dg/empty-source-3.c
@@ -4,4 +4,4 @@
 /* { dg-do compile } */
 /* { dg-options "-pedantic-errors" } */
 
-/* { dg-error "ISO C forbids an empty translation unit" "empty" { target *-*-* } . } */
+/* { dg-error "ISO C forbids an empty translation unit" "empty" { target *-*-* } } */
diff --git a/gcc/testsuite/gcc.dg/label-decl-2.c b/gcc/testsuite/gcc.dg/label-decl-2.c
index 2ba1f63..2ad4272 100644
--- a/gcc/testsuite/gcc.dg/label-decl-2.c
+++ b/gcc/testsuite/gcc.dg/label-decl-2.c
@@ -8,7 +8,7 @@ typedef int b;
 void
 f (void)
 {
-  __label__ a, b, c, d; /* { dg-warning "ISO C forbids label declarations" "label decls" { target *-*-* } . } */
+  __label__ a, b, c, d; /* { dg-warning "ISO C forbids label declarations" "label decls" { target *-*-* } } */
   __extension__ (void)&&d; /* { dg-error "label 'd' used but not defined" } */
   goto c; /* { dg-error "label 'c' used but not defined" } */
  a: (void)0;
diff --git a/gcc/testsuite/gcc.dg/m-un-2.c b/gcc/testsuite/gcc.dg/m-un-2.c
index ffe68cd..345b9ff 100644
--- a/gcc/testsuite/gcc.dg/m-un-2.c
+++ b/gcc/testsuite/gcc.dg/m-un-2.c
@@ -15,7 +15,7 @@ struct vtable {
 struct vtable mtable = {
   malloc,
   free
-}; /* { dg-warning "missing initializer" "warning regression" { target *-*-* } . } */
+}; /* { dg-warning "missing initializer" "warning regression" { target *-*-* } } */
    /* { dg-message "declared here" "warning regression 2" { target *-*-* } 12 } */
 
 /* With designated initializers, we assume you meant to leave out the
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-1.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-1.c
index b4a9a6e..a8dca4b 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-1.c
@@ -764,7 +764,7 @@ void test_sprintf_chk_j_const (void)
   T (1, "%+.0ju",    I (0));         /* { dg-warning ".\\+. flag used" } */
   T (1, "%-.0jd",    I (0));
   T (1, "% .0jd",    I (0));         /* { dg-warning "nul past the end" } */
-  T (1, "% .0ju",    I (0));         /* { dg-warning ". . flag used" } */
+  T (1, "% .0ju",    I (0));         /* { dg-warning ". flag used" } */
   T (1, "%0.0jd",    I (0));         /* { dg-warning ".0. flag ignored with precision" } */
   T (1, "%00.0jd",   I (0));         /* { dg-warning "repeated .0. flag in format" } */
   /* { dg-warning ".0. flag ignored with precision" "" { target *-*-* } .-1 } */
@@ -840,7 +840,7 @@ void test_sprintf_chk_l_const (void)
   T (1, "%+.0lu",    0L);         /* { dg-warning ".\\+. flag used" } */
   T (1, "%-.0ld",    0L);
   T (1, "% .0ld",    0L);         /* { dg-warning "nul past the end" } */
-  T (1, "% .0lu",    0L);         /* { dg-warning ". . flag used" } */
+  T (1, "% .0lu",    0L);         /* { dg-warning ". flag used" } */
   T (1, "%0.0ld",    0L);         /* { dg-warning ".0. flag ignored with precision" } */
   T (1, "%00.0ld",   0L);         /* { dg-warning "repeated .0. flag in format" } */
   /* { dg-warning ".0. flag ignored with precision" "" { target *-*-* } .-1 } */
@@ -1116,7 +1116,7 @@ void test_sprintf_chk_hh_nonconst (int w, int p, int a)
 {
   T (-1, "%hhd",        a);
 
-  T (0, "%hhd",         a);     /* { dg-warning ".%hhd. directive writing between 1 and . bytes into a region of size 0" } */
+  T (0, "%hhd",         a);     /* { dg-warning ".%hhd. directive writing between 1 and bytes into a region of size 0" } */
   T (0, "%hhi",      var0);     /* { dg-warning "into a region" } */
   T (0, "%hhi",         a);     /* { dg-warning "into a region" } */
   T (0, "%hhu",         a);     /* { dg-warning "into a region" } */
@@ -1147,9 +1147,9 @@ void test_sprintf_chk_hh_nonconst (int w, int p, int a)
   T (2, "% hhd",     var0);     /* { dg-warning "nul past the end" } */
   T (2, "% hhd",    var10);     /* { dg-warning "nul past the end" } */
   T (2, "% hhi",        a);     /* { dg-warning "nul past the end" } */
-  T (2, "% hho",        a);     /* { dg-warning ". . flag used with .%o." } */
-  T (2, "% hhu",        a);     /* { dg-warning ". . flag used with .%u." } */
-  T (2, "% hhx",        a);     /* { dg-warning ". . flag used with .%x." } */
+  T (2, "% hho",        a);     /* { dg-warning ". flag used with .%o." } */
+  T (2, "% hhu",        a);     /* { dg-warning ". flag used with .%u." } */
+  T (2, "% hhx",        a);     /* { dg-warning ". flag used with .%x." } */
 
   /* The following results in between "0" and "0377" for -1.  Although
      the minimum output would fit, given the '#' flag the likely output
@@ -1295,9 +1295,9 @@ void test_sprintf_chk_h_nonconst (int a)
 
   T (2, "% hd",         a);     /* { dg-warning "nul past the end" } */
   T (2, "% hi",         a);     /* { dg-warning "nul past the end" } */
-  T (2, "% ho",         a);     /* { dg-warning ". . flag used with .%o." } */
-  T (2, "% hu",         a);     /* { dg-warning ". . flag used with .%u." } */
-  T (2, "% hx",         a);     /* { dg-warning ". . flag used with .%x." } */
+  T (2, "% ho",         a);     /* { dg-warning ". flag used with .%o." } */
+  T (2, "% hu",         a);     /* { dg-warning ". flag used with .%u." } */
+  T (2, "% hx",         a);     /* { dg-warning ". flag used with .%x." } */
 
   T (2, "#%ho",         a);     /* { dg-warning "nul past the end" } */
   T (2, "#%hx",         a);     /* { dg-warning "nul past the end" } */
@@ -1341,9 +1341,9 @@ void test_sprintf_chk_int_nonconst (int w, int p, int a)
 
   T (2, "% d",          a);     /* { dg-warning "nul past the end" } */
   T (2, "% i",          a);     /* { dg-warning "nul past the end" } */
-  T (2, "% o",          a);     /* { dg-warning ". . flag used with .%o." } */
-  T (2, "% u",          a);     /* { dg-warning ". . flag used with .%u." } */
-  T (2, "% x",          a);     /* { dg-warning ". . flag used with .%x." } */
+  T (2, "% o",          a);     /* { dg-warning ". flag used with .%o." } */
+  T (2, "% u",          a);     /* { dg-warning ". flag used with .%u." } */
+  T (2, "% x",          a);     /* { dg-warning ". flag used with .%x." } */
 
   T (2, "#%o",          a);     /* { dg-warning "nul past the end" } */
   T (2, "#%x",          a);     /* { dg-warning "nul past the end" } */
@@ -1504,9 +1504,9 @@ void test_vsprintf_chk_int (va_list va)
 
   T (2, "% d");               /* { dg-warning "nul past the end" } */
   T (2, "% i");               /* { dg-warning "nul past the end" } */
-  T (2, "% o");               /* { dg-warning ". . flag used with .%o." } */
-  T (2, "% u");               /* { dg-warning ". . flag used with .%u." } */
-  T (2, "% x");               /* { dg-warning ". . flag used with .%x." } */
+  T (2, "% o");               /* { dg-warning ". flag used with .%o." } */
+  T (2, "% u");               /* { dg-warning ". flag used with .%u." } */
+  T (2, "% x");               /* { dg-warning ". flag used with .%x." } */
 
   T (2, "#%o");               /* { dg-warning "nul past the end" } */
   T (2, "#%x");               /* { dg-warning "nul past the end" } */
@@ -1672,9 +1672,9 @@ void test_vsprintf_int (va_list va)
 
   T (2, "% d");     /* { dg-warning "nul past the end" } */
   T (2, "% i");     /* { dg-warning "nul past the end" } */
-  T (2, "% o");     /* { dg-warning ". . flag used with .%o." } */
-  T (2, "% u");     /* { dg-warning ". . flag used with .%u." } */
-  T (2, "% x");     /* { dg-warning ". . flag used with .%x." } */
+  T (2, "% o");     /* { dg-warning ". flag used with .%o." } */
+  T (2, "% u");     /* { dg-warning ". flag used with .%u." } */
+  T (2, "% x");     /* { dg-warning ". flag used with .%x." } */
 
   T (2, "#%o");     /* { dg-warning "nul past the end" } */
   T (2, "#%x");     /* { dg-warning "nul past the end" } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-2.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-2.c
index f21dae4..0e328ca 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-2.c
@@ -194,7 +194,7 @@ void test_hh_nonconst (int w, int p, int x, unsigned y)
   /* { dg-warning ".\\+. flag used" "-Wformat" { target *-*-* } .-1 } */
   T (1, "%-.*hhu",    0, y);    /* { dg-warning "writing up to 3 bytes" } */
   T (1, "% .*hhu",    0, y);    /* { dg-warning "writing up to 3 bytes" } */
-  /* { dg-warning ". . flag used" "-Wformat" { target *-*-* } .-1 } */
+  /* { dg-warning ". flag used" "-Wformat" { target *-*-* } .-1 } */
 }
 
 void test_h_nonconst (int x)
diff --git a/gcc/testsuite/gcc.dg/uninit-pr19430-O0.c b/gcc/testsuite/gcc.dg/uninit-pr19430-O0.c
index 3b6a316..832aeb3 100644
--- a/gcc/testsuite/gcc.dg/uninit-pr19430-O0.c
+++ b/gcc/testsuite/gcc.dg/uninit-pr19430-O0.c
@@ -6,7 +6,7 @@ extern void baz (int *);
 int
 foo (int i)
 {
-  int j; /* { dg-warning "'j' may be used uninitialized in this function" "uninitialized" { xfail *-*-* } . } */
+  int j; /* { dg-warning "'j' may be used uninitialized in this function" "uninitialized" { xfail *-*-* } } */
 
   if (bar (i)) {
     baz (&j);
diff --git a/gcc/testsuite/gcc.dg/uninit-pr19430.c b/gcc/testsuite/gcc.dg/uninit-pr19430.c
index a21b641..ef47b26 100644
--- a/gcc/testsuite/gcc.dg/uninit-pr19430.c
+++ b/gcc/testsuite/gcc.dg/uninit-pr19430.c
@@ -5,7 +5,7 @@ extern void baz (int *);
 int
 foo (int i)
 {
-  int j; /* { dg-warning "'j' may be used uninitialized in this function" "uninitialized" { xfail *-*-* } . } */
+  int j; /* { dg-warning "'j' may be used uninitialized in this function" "uninitialized" { xfail *-*-* } } */
 
   if (bar (i)) { 
     baz (&j);
diff --git a/gcc/testsuite/gcc.dg/uninit-pr20644-O0.c b/gcc/testsuite/gcc.dg/uninit-pr20644-O0.c
index 88099e6..14bd0e2 100644
--- a/gcc/testsuite/gcc.dg/uninit-pr20644-O0.c
+++ b/gcc/testsuite/gcc.dg/uninit-pr20644-O0.c
@@ -7,7 +7,7 @@ int foo ()
   int j;
 
   if (1 == i)
-    return j; /* { dg-bogus "uninitialized" "uninitialized" { xfail *-*-* } . } */
+    return j; /* { dg-bogus "uninitialized" "uninitialized" { xfail *-*-* } } */
 
   return 0;
 }
@@ -18,7 +18,7 @@ int bar ()
   int j; 
 
   if (1 == i)
-    return j; /* { dg-warning "uninitialized" "uninitialized" { target *-*-* } . } */
+    return j; /* { dg-warning "uninitialized" "uninitialized" { target *-*-* } } */
 
   return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/utf16-4.c b/gcc/testsuite/gcc.dg/utf16-4.c
index 95cfce8..6ef4ae3 100644
--- a/gcc/testsuite/gcc.dg/utf16-4.c
+++ b/gcc/testsuite/gcc.dg/utf16-4.c
@@ -15,7 +15,7 @@ char16_t	c5 = U'\u2029';
 char16_t	c6 = U'\U00064321';	/* { dg-warning "implicitly truncated" } */
 char16_t	c7 = L'a';
 char16_t	c8 = L'\u2029';
-char16_t 	c9 = L'\U00064321';	/* { dg-warning "implicitly truncated" "" { target { 4byte_wchar_t } } . } */
+char16_t 	c9 = L'\U00064321';	/* { dg-warning "implicitly truncated" "" { target { 4byte_wchar_t } } } */
 					/* { dg-warning "constant too long" "" { target { ! 4byte_wchar_t } } .-1 } */
 
 int main () {}
diff --git a/gcc/testsuite/gfortran.dg/pr70006.f90 b/gcc/testsuite/gfortran.dg/pr70006.f90
index 9f14eea..a98d3da 100644
--- a/gcc/testsuite/gfortran.dg/pr70006.f90
+++ b/gcc/testsuite/gfortran.dg/pr70006.f90
@@ -1,9 +1,9 @@
 ! { dg-do compile }
 program test
-   print 1, 'string 1' ! { dg-error "FORMAT label 1" " " { target *-*-* } . }
-   print 1, 'string 2' ! { dg-error "FORMAT label 1" " " { target *-*-* } . }
+   print 1, 'string 1' ! { dg-error "FORMAT label 1" " " { target *-*-* } }
+   print 1, 'string 2' ! { dg-error "FORMAT label 1" " " { target *-*-* } }
 !1 format(a)
-   goto 2 ! { dg-error "Label 2 referenced" " " { target *-*-* } . }
-   goto 2 ! { dg-error "Label 2 referenced" " " { target *-*-* } . }
+   goto 2 ! { dg-error "Label 2 referenced" " " { target *-*-* } }
+   goto 2 ! { dg-error "Label 2 referenced" " " { target *-*-* } }
 !2 continue
 end program
diff --git a/gcc/testsuite/obj-c++.dg/fsf-package-0.m b/gcc/testsuite/obj-c++.dg/fsf-package-0.m
index a64253e..c2fc0cf 100644
--- a/gcc/testsuite/obj-c++.dg/fsf-package-0.m
+++ b/gcc/testsuite/obj-c++.dg/fsf-package-0.m
@@ -32,5 +32,5 @@ void foo (void)
   a->v2 = 1;
   a->v3 = [a value] - a->v2;	/* { dg-warning ".v3. is @protected" } */
   a->v4 = a->v3 - 1;		/* { dg-warning ".v4. is @private" } */
-  				/* { dg-warning ".v3. is @protected" "" { target *-*-* } . } */
+  				/* { dg-warning ".v3. is @protected" "" { target *-*-* } } */
 }

[-- Attachment #3: 0002-Remove-target-in-dg-error-warning-message-bogus.patch --]
[-- Type: text/x-patch, Size: 12569 bytes --]

Remove '{ target *-*-* } }' in dg-(error|warning|message|bogus)

find $(find -type d -name testsuite) -type f \
     | xargs sed -ri \
       's#(dg-(error|warning|message|bogus).*) \{ target \*-\*-\* \} \}#\1 }#'

---
 gcc/testsuite/g++.dg/parse/error2.C                               | 2 +-
 gcc/testsuite/g++.dg/parse/parameter-declaration-1.C              | 2 +-
 gcc/testsuite/g++.dg/warn/Wstrict-aliasing-float-ref-int-obj.C    | 2 +-
 gcc/testsuite/gcc.dg/Wpointer-sign-Wall.c                         | 2 +-
 gcc/testsuite/gcc.dg/Wpointer-sign-pedantic.c                     | 2 +-
 gcc/testsuite/gcc.dg/cpp/19990413-1.c                             | 2 +-
 gcc/testsuite/gcc.dg/dg-test-1.c                                  | 4 ++--
 gcc/testsuite/gcc.dg/empty-source-2.c                             | 2 +-
 gcc/testsuite/gcc.dg/empty-source-3.c                             | 2 +-
 gcc/testsuite/gcc.dg/format/c99-printf-1.c                        | 4 ++--
 gcc/testsuite/gcc.dg/format/c99-scanf-1.c                         | 2 +-
 gcc/testsuite/gcc.dg/label-decl-2.c                               | 2 +-
 gcc/testsuite/gcc.dg/m-un-2.c                                     | 2 +-
 gcc/testsuite/gcc.dg/uninit-pr20644-O0.c                          | 2 +-
 gcc/testsuite/gfortran.dg/pr70006.f90                             | 8 ++++----
 gcc/testsuite/obj-c++.dg/fsf-package-0.m                          | 2 +-
 .../testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc       | 2 +-
 17 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/gcc/testsuite/g++.dg/parse/error2.C b/gcc/testsuite/g++.dg/parse/error2.C
index cb8f413..1cca27c 100644
--- a/gcc/testsuite/g++.dg/parse/error2.C
+++ b/gcc/testsuite/g++.dg/parse/error2.C
@@ -8,7 +8,7 @@ int func(double);
 template <int>
 struct Foo {};
 
-Foo<func(g)> f; // { dg-error "5:'int func.double.' cannot appear in a constant-expression" "func double" { target *-*-* } }
+Foo<func(g)> f; // { dg-error "5:'int func.double.' cannot appear in a constant-expression" "func double" }
 // { dg-error "10:'g' cannot appear in a constant-expression" "g" { target *-*-* } .-1 }
 // { dg-error "11:a function call cannot appear in a constant-expression" "call" { target *-*-* } .-2 }
 // { dg-error "12:template argument 1 is invalid" "invalid template argument" { target *-*-* } .-3 }
diff --git a/gcc/testsuite/g++.dg/parse/parameter-declaration-1.C b/gcc/testsuite/g++.dg/parse/parameter-declaration-1.C
index 22d6f21..1eaa00e 100644
--- a/gcc/testsuite/g++.dg/parse/parameter-declaration-1.C
+++ b/gcc/testsuite/g++.dg/parse/parameter-declaration-1.C
@@ -3,4 +3,4 @@
 // { dg-do compile }
 
 struct {
-   a(void = 0; a(0), a(0)	// { dg-error "" "" { target *-*-* } }
+   a(void = 0; a(0), a(0)	// { dg-error "" "" }
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-float-ref-int-obj.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-float-ref-int-obj.C
index 9027061..d298555 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-float-ref-int-obj.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-float-ref-int-obj.C
@@ -4,7 +4,7 @@
 
 int foo() {
   int x;
-  float& q = reinterpret_cast<float&> (x);  /* { dg-message "dereferencing type-punned" "deref" { target *-*-* } } */
+  float& q = reinterpret_cast<float&> (x);  /* { dg-message "dereferencing type-punned" "deref" } */
   q = 1.0; /* { dg-warning "does break strict-aliasing" "strict-aliasing" { xfail *-*-* } } */
   return x;
 }
diff --git a/gcc/testsuite/gcc.dg/Wpointer-sign-Wall.c b/gcc/testsuite/gcc.dg/Wpointer-sign-Wall.c
index d29df30..843885f 100644
--- a/gcc/testsuite/gcc.dg/Wpointer-sign-Wall.c
+++ b/gcc/testsuite/gcc.dg/Wpointer-sign-Wall.c
@@ -2,7 +2,7 @@
 
 /* { dg-options "-Wall" } */
 
-void foo(unsigned long* ulp); /* { dg-message "note: expected '\[^\n'\]*' but argument is of type '\[^\n'\]*'" "note: expected" { target *-*-* } } */
+void foo(unsigned long* ulp); /* { dg-message "note: expected '\[^\n'\]*' but argument is of type '\[^\n'\]*'" "note: expected" } */
 
 
 void bar(long* lp) {
diff --git a/gcc/testsuite/gcc.dg/Wpointer-sign-pedantic.c b/gcc/testsuite/gcc.dg/Wpointer-sign-pedantic.c
index aebfbdd..ab1130d 100644
--- a/gcc/testsuite/gcc.dg/Wpointer-sign-pedantic.c
+++ b/gcc/testsuite/gcc.dg/Wpointer-sign-pedantic.c
@@ -2,7 +2,7 @@
 
 /* { dg-options "-pedantic" } */
 
-void foo(unsigned long* ulp);/* { dg-message "note: expected '\[^'\n\]*' but argument is of type '\[^'\n\]*'" "note: expected" { target *-*-* } } */
+void foo(unsigned long* ulp);/* { dg-message "note: expected '\[^'\n\]*' but argument is of type '\[^'\n\]*'" "note: expected" } */
 
 void bar(long* lp) {
   foo(lp); /* { dg-warning "differ in signedness" } */
diff --git a/gcc/testsuite/gcc.dg/cpp/19990413-1.c b/gcc/testsuite/gcc.dg/cpp/19990413-1.c
index bcb7e52..00f62c8 100644
--- a/gcc/testsuite/gcc.dg/cpp/19990413-1.c
+++ b/gcc/testsuite/gcc.dg/cpp/19990413-1.c
@@ -9,5 +9,5 @@ func(void)
 {
   FOO(i
       = 4)
-  else;  /* { dg-error "'else' without a previous 'if'" "error on this line" { target *-*-* } } */ 
+  else;  /* { dg-error "'else' without a previous 'if'" "error on this line" } */ 
 }
diff --git a/gcc/testsuite/gcc.dg/dg-test-1.c b/gcc/testsuite/gcc.dg/dg-test-1.c
index b4e22e2..c0e672a 100644
--- a/gcc/testsuite/gcc.dg/dg-test-1.c
+++ b/gcc/testsuite/gcc.dg/dg-test-1.c
@@ -5,7 +5,7 @@
 void
 foo (void)
 {			/* { dg-error "'a' undeclared" "err1" { target *-*-* } .+1 } */
-  int z = a + b + c + d;/* { dg-error "'b' undeclared" "err2" { target *-*-* } } */
+  int z = a + b + c + d;/* { dg-error "'b' undeclared" "err2" } */
 }			/* { dg-error "'c' undeclared" "err3" { target *-*-* } .-1 } */
 
 
@@ -13,7 +13,7 @@ foo (void)
 /* { dg-warning "unused parameter 'e'" "warn1" { target *-*-* } .+3 } */
 
 void				/* { dg-warning "unused parameter 'f'" "warn2" { target *-*-* } .+1 } */
-bar (int e, int f, int g, int h)/* { dg-warning "unused parameter 'g'" "warn3" { target *-*-* } } */
+bar (int e, int f, int g, int h)/* { dg-warning "unused parameter 'g'" "warn3" } */
 {				/* { dg-warning "unused parameter 'h'" "warn4" { target *-*-* } .-1 } */
 }
 
diff --git a/gcc/testsuite/gcc.dg/empty-source-2.c b/gcc/testsuite/gcc.dg/empty-source-2.c
index e0f1e20..ae36159 100644
--- a/gcc/testsuite/gcc.dg/empty-source-2.c
+++ b/gcc/testsuite/gcc.dg/empty-source-2.c
@@ -3,4 +3,4 @@
 /* { dg-do compile } */
 /* { dg-options "-pedantic" } */
 
-/* { dg-warning "ISO C forbids an empty translation unit" "empty" { target *-*-* } } */
+/* { dg-warning "ISO C forbids an empty translation unit" "empty" } */
diff --git a/gcc/testsuite/gcc.dg/empty-source-3.c b/gcc/testsuite/gcc.dg/empty-source-3.c
index a1e1d2c..bcd76ac 100644
--- a/gcc/testsuite/gcc.dg/empty-source-3.c
+++ b/gcc/testsuite/gcc.dg/empty-source-3.c
@@ -4,4 +4,4 @@
 /* { dg-do compile } */
 /* { dg-options "-pedantic-errors" } */
 
-/* { dg-error "ISO C forbids an empty translation unit" "empty" { target *-*-* } } */
+/* { dg-error "ISO C forbids an empty translation unit" "empty" } */
diff --git a/gcc/testsuite/gcc.dg/format/c99-printf-1.c b/gcc/testsuite/gcc.dg/format/c99-printf-1.c
index 729e41c..408ad49 100644
--- a/gcc/testsuite/gcc.dg/format/c99-printf-1.c
+++ b/gcc/testsuite/gcc.dg/format/c99-printf-1.c
@@ -62,8 +62,8 @@ foo (int i, unsigned int u, double d, char *s, void *p, int *n,
   printf ("%llc", i); /* { dg-warning "length" "bad use of %ll" } */
   printf ("%lls", s); /* { dg-warning "length" "bad use of %ll" } */
   printf ("%llp", p); /* { dg-warning "length" "bad use of %ll" } */
-  printf ("%jd%ji%jo%ju%jx%jX", j, j, uj, uj, uj, uj); /* { dg-bogus "length" "bogus %j warning" { target *-*-* } } */
-  printf ("%jn", jn); /* { dg-bogus "length" "bogus %j warning" { target *-*-* } } */
+  printf ("%jd%ji%jo%ju%jx%jX", j, j, uj, uj, uj, uj); /* { dg-bogus "length" "bogus %j warning" } */
+  printf ("%jn", jn); /* { dg-bogus "length" "bogus %j warning" } */
   printf ("%jf", d); /* { dg-warning "length" "bad use of %j" } */
   printf ("%jF", d); /* { dg-warning "length" "bad use of %j" } */
   printf ("%je", d); /* { dg-warning "length" "bad use of %j" } */
diff --git a/gcc/testsuite/gcc.dg/format/c99-scanf-1.c b/gcc/testsuite/gcc.dg/format/c99-scanf-1.c
index 7a8b3e2..521ef1d 100644
--- a/gcc/testsuite/gcc.dg/format/c99-scanf-1.c
+++ b/gcc/testsuite/gcc.dg/format/c99-scanf-1.c
@@ -82,7 +82,7 @@ foo (int *ip, unsigned int *uip, short int *hp, unsigned short int *uhp,
   scanf ("%ll[ac]", s); /* { dg-warning "length" "bad use of %ll" } */
   scanf ("%llc", s); /* { dg-warning "length" "bad use of %ll" } */
   scanf ("%llp", pp); /* { dg-warning "length" "bad use of %ll" } */
-  scanf ("%jd%ji%jo%ju%jx%jX%jn", jp, jp, ujp, ujp, ujp, ujp, jn); /* { dg-bogus "length" "bogus %j warning" { target *-*-* } } */
+  scanf ("%jd%ji%jo%ju%jx%jX%jn", jp, jp, ujp, ujp, ujp, ujp, jn); /* { dg-bogus "length" "bogus %j warning" } */
   scanf ("%ja", fp); /* { dg-warning "length" "bad use of %j" } */
   scanf ("%jA", fp); /* { dg-warning "length" "bad use of %j" } */
   scanf ("%je", fp); /* { dg-warning "length" "bad use of %j" } */
diff --git a/gcc/testsuite/gcc.dg/label-decl-2.c b/gcc/testsuite/gcc.dg/label-decl-2.c
index 2ad4272..3ebe290 100644
--- a/gcc/testsuite/gcc.dg/label-decl-2.c
+++ b/gcc/testsuite/gcc.dg/label-decl-2.c
@@ -8,7 +8,7 @@ typedef int b;
 void
 f (void)
 {
-  __label__ a, b, c, d; /* { dg-warning "ISO C forbids label declarations" "label decls" { target *-*-* } } */
+  __label__ a, b, c, d; /* { dg-warning "ISO C forbids label declarations" "label decls" } */
   __extension__ (void)&&d; /* { dg-error "label 'd' used but not defined" } */
   goto c; /* { dg-error "label 'c' used but not defined" } */
  a: (void)0;
diff --git a/gcc/testsuite/gcc.dg/m-un-2.c b/gcc/testsuite/gcc.dg/m-un-2.c
index 345b9ff..b12c7cb 100644
--- a/gcc/testsuite/gcc.dg/m-un-2.c
+++ b/gcc/testsuite/gcc.dg/m-un-2.c
@@ -15,7 +15,7 @@ struct vtable {
 struct vtable mtable = {
   malloc,
   free
-}; /* { dg-warning "missing initializer" "warning regression" { target *-*-* } } */
+}; /* { dg-warning "missing initializer" "warning regression" } */
    /* { dg-message "declared here" "warning regression 2" { target *-*-* } 12 } */
 
 /* With designated initializers, we assume you meant to leave out the
diff --git a/gcc/testsuite/gcc.dg/uninit-pr20644-O0.c b/gcc/testsuite/gcc.dg/uninit-pr20644-O0.c
index 14bd0e2..8ae697a 100644
--- a/gcc/testsuite/gcc.dg/uninit-pr20644-O0.c
+++ b/gcc/testsuite/gcc.dg/uninit-pr20644-O0.c
@@ -18,7 +18,7 @@ int bar ()
   int j; 
 
   if (1 == i)
-    return j; /* { dg-warning "uninitialized" "uninitialized" { target *-*-* } } */
+    return j; /* { dg-warning "uninitialized" "uninitialized" } */
 
   return 0;
 }
diff --git a/gcc/testsuite/gfortran.dg/pr70006.f90 b/gcc/testsuite/gfortran.dg/pr70006.f90
index a98d3da..97b4170 100644
--- a/gcc/testsuite/gfortran.dg/pr70006.f90
+++ b/gcc/testsuite/gfortran.dg/pr70006.f90
@@ -1,9 +1,9 @@
 ! { dg-do compile }
 program test
-   print 1, 'string 1' ! { dg-error "FORMAT label 1" " " { target *-*-* } }
-   print 1, 'string 2' ! { dg-error "FORMAT label 1" " " { target *-*-* } }
+   print 1, 'string 1' ! { dg-error "FORMAT label 1" " " }
+   print 1, 'string 2' ! { dg-error "FORMAT label 1" " " }
 !1 format(a)
-   goto 2 ! { dg-error "Label 2 referenced" " " { target *-*-* } }
-   goto 2 ! { dg-error "Label 2 referenced" " " { target *-*-* } }
+   goto 2 ! { dg-error "Label 2 referenced" " " }
+   goto 2 ! { dg-error "Label 2 referenced" " " }
 !2 continue
 end program
diff --git a/gcc/testsuite/obj-c++.dg/fsf-package-0.m b/gcc/testsuite/obj-c++.dg/fsf-package-0.m
index c2fc0cf..942c1f4 100644
--- a/gcc/testsuite/obj-c++.dg/fsf-package-0.m
+++ b/gcc/testsuite/obj-c++.dg/fsf-package-0.m
@@ -32,5 +32,5 @@ void foo (void)
   a->v2 = 1;
   a->v3 = [a value] - a->v2;	/* { dg-warning ".v3. is @protected" } */
   a->v4 = a->v3 - 1;		/* { dg-warning ".v4. is @private" } */
-  				/* { dg-warning ".v3. is @protected" "" { target *-*-* } } */
+  				/* { dg-warning ".v3. is @protected" "" } */
 }
diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc b/libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc
index 76999c4..c16ac6f 100644
--- a/libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc
+++ b/libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc
@@ -31,5 +31,5 @@
 
 void foo()
 {
- assert(true);  // { dg-error "not declared" "" { target *-*-* } } 
+ assert(true);  // { dg-error "not declared" "" } 
 }

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
  2017-04-26 12:50                     ` Jakub Jelinek
  2017-04-27  9:03                       ` Tom de Vries
@ 2017-04-28  1:35                       ` Tom de Vries
  2017-04-28 16:28                         ` Jeff Law
  1 sibling, 1 reply; 21+ messages in thread
From: Tom de Vries @ 2017-04-28  1:35 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Mike Stump, Rainer Orth, Richard Biener, GCC Patches

[-- Attachment #1: Type: text/plain, Size: 585 bytes --]

On 04/26/2017 01:57 PM, Jakub Jelinek wrote:
> I guess those should be decided case by case
> whether we want relative, absolute or saved line numbers.  If the
> diagnostic is within the same function or code block as the stuff it is
> relative to, relative is fine, but if e.g. the messages are just at the end
> of file and there are unrelated functions in between, it is not a good idea

I've written attached patches:
- replace absolute linenrs in objc.dg,obj-c++.dg
- replace absolute linenrs in gfortran.dg
and tested them on x86_64 with -m64/-m32.

OK for trunk?

Thanks,
- Tom

[-- Attachment #2: 0001-Replace-absolute-linenrs-in-objc.dg-obj-c-.dg.patch --]
[-- Type: text/x-patch, Size: 57444 bytes --]

Replace absolute linenrs in objc.dg,obj-c++.dg

2017-04-25  Tom de Vries  <tom@codesourcery.com>

	* obj-c++.dg/bitfield-1.mm: Replace absolute linenrs.
	* obj-c++.dg/bitfield-4.mm: Same.
	* obj-c++.dg/bitfield-5.mm: Same.
	* obj-c++.dg/exceptions-3.mm: Same.
	* obj-c++.dg/exceptions-5.mm: Same.
	* obj-c++.dg/method-1.mm: Same.
	* obj-c++.dg/method-12.mm: Same.
	* obj-c++.dg/method-13.mm: Same.
	* obj-c++.dg/method-15.mm: Same.
	* obj-c++.dg/method-16.mm: Same.
	* obj-c++.dg/property/at-property-18.mm: Same.
	* obj-c++.dg/property/at-property-25.mm: Same.
	* obj-c++.dg/property/at-property-5.mm: Same.
	* obj-c++.dg/property/dynamic-2.mm: Same.
	* obj-c++.dg/property/property-neg-3.mm: Same.
	* obj-c++.dg/protocol-inheritance-1.mm: Same.
	* obj-c++.dg/protocol-inheritance-2.mm: Same.
	* obj-c++.dg/syntax-error-1.mm: Same.
	* obj-c++.dg/try-catch-13.mm: Same.
	* objc.dg/bitfield-4.m: Same.
	* objc.dg/class-1.m: Same.
	* objc.dg/method-11.m: Same.
	* objc.dg/method-6.m: Same.
	* objc.dg/method-7.m: Same.
	* objc.dg/method-9.m: Same.
	* objc.dg/missing-proto-3.m: Same.
	* objc.dg/naming-2.m: Same.
	* objc.dg/property/at-property-16.m: Same.
	* objc.dg/property/at-property-18.m: Same.
	* objc.dg/property/at-property-25.m: Same.
	* objc.dg/property/at-property-5.m: Same.
	* objc.dg/property/dynamic-2.m: Same.
	* objc.dg/property/property-neg-3.m: Same.
	* objc.dg/protocol-inheritance-1.m: Same.
	* objc.dg/protocol-inheritance-2.m: Same.

---
 gcc/testsuite/obj-c++.dg/bitfield-1.mm             | 24 +++++++--------
 gcc/testsuite/obj-c++.dg/bitfield-4.mm             |  8 ++---
 gcc/testsuite/obj-c++.dg/bitfield-5.mm             | 12 ++++----
 gcc/testsuite/obj-c++.dg/exceptions-3.mm           |  6 ++--
 gcc/testsuite/obj-c++.dg/exceptions-5.mm           |  6 ++--
 gcc/testsuite/obj-c++.dg/method-1.mm               |  7 +++--
 gcc/testsuite/obj-c++.dg/method-12.mm              |  8 ++---
 gcc/testsuite/obj-c++.dg/method-13.mm              |  8 ++---
 gcc/testsuite/obj-c++.dg/method-15.mm              | 16 +++++-----
 gcc/testsuite/obj-c++.dg/method-16.mm              | 16 +++++-----
 .../obj-c++.dg/property/at-property-18.mm          | 32 ++++++++++----------
 .../obj-c++.dg/property/at-property-25.mm          | 11 ++++---
 gcc/testsuite/obj-c++.dg/property/at-property-5.mm |  4 +--
 gcc/testsuite/obj-c++.dg/property/dynamic-2.mm     |  4 +--
 .../obj-c++.dg/property/property-neg-3.mm          |  4 +--
 gcc/testsuite/obj-c++.dg/protocol-inheritance-1.mm |  7 ++---
 gcc/testsuite/obj-c++.dg/protocol-inheritance-2.mm | 14 ++++-----
 gcc/testsuite/obj-c++.dg/syntax-error-1.mm         |  5 ++--
 gcc/testsuite/obj-c++.dg/try-catch-13.mm           |  8 ++---
 gcc/testsuite/objc.dg/bitfield-4.m                 | 12 ++++----
 gcc/testsuite/objc.dg/class-1.m                    | 17 ++++++-----
 gcc/testsuite/objc.dg/method-11.m                  | 16 +++++-----
 gcc/testsuite/objc.dg/method-6.m                   |  8 ++---
 gcc/testsuite/objc.dg/method-7.m                   |  8 ++---
 gcc/testsuite/objc.dg/method-9.m                   | 16 +++++-----
 gcc/testsuite/objc.dg/missing-proto-3.m            |  7 ++---
 gcc/testsuite/objc.dg/naming-2.m                   |  4 +--
 gcc/testsuite/objc.dg/property/at-property-16.m    | 34 +++++++++++-----------
 gcc/testsuite/objc.dg/property/at-property-18.m    | 32 ++++++++++----------
 gcc/testsuite/objc.dg/property/at-property-25.m    | 11 ++++---
 gcc/testsuite/objc.dg/property/at-property-5.m     |  4 +--
 gcc/testsuite/objc.dg/property/dynamic-2.m         |  4 +--
 gcc/testsuite/objc.dg/property/property-neg-3.m    |  4 +--
 gcc/testsuite/objc.dg/protocol-inheritance-1.m     |  7 ++---
 gcc/testsuite/objc.dg/protocol-inheritance-2.m     | 14 ++++-----
 35 files changed, 196 insertions(+), 202 deletions(-)

diff --git a/gcc/testsuite/obj-c++.dg/bitfield-1.mm b/gcc/testsuite/obj-c++.dg/bitfield-1.mm
index 92aaae4..a637619 100644
--- a/gcc/testsuite/obj-c++.dg/bitfield-1.mm
+++ b/gcc/testsuite/obj-c++.dg/bitfield-1.mm
@@ -39,10 +39,10 @@ struct Base_0 { /* { dg-warning "padding struct size to alignment boundary" } */
   signed e: 5;
   unsigned f: 4;
   enum Enum g: 3;
-}
+} /* { dg-line interface_Derived } */
 @end
 
-struct Derived_0 {
+struct Derived_0 { /* { dg-line struct_Derived_0 } */
   Class isa;
   unsigned a: 2;
   int b: 3;
@@ -56,10 +56,10 @@ struct Derived_0 {
 @interface Leaf: Derived {
 @public
   signed h: 2;
-}
+} /* { dg-line interface_Leaf } */
 @end
 
-struct Leaf_0 {
+struct Leaf_0 { /* { dg-line struct_Leaf_0 } */
   Class isa;
   unsigned a: 2;
   int b: 3;
@@ -74,8 +74,8 @@ struct Leaf_0 {
 /* Note that the semicolon after @defs(...) is optional.  */
 
 typedef struct { @defs(Base) } Base_t; /* { dg-warning "padding struct size to alignment boundary" } */
-typedef struct { @defs(Derived); } Derived_t;
-typedef struct { @defs(Leaf); } Leaf_t;
+typedef struct { @defs(Derived); } Derived_t; /* { dg-line Derived_t_def } */
+typedef struct { @defs(Leaf); } Leaf_t; /* { dg-line Leaf_t_def } */
 
 int main(void)
 {
@@ -116,9 +116,9 @@ int main(void)
 
 /* { dg-prune-output "In file included from" }  Ignore this message.  */
 /* { dg-bogus "padding struct to align" "PR23610" { target *-*-* } 0 } */
-/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 42 } */
-/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 45 } */
-/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 59 } */
-/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 62 } */
-/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 77 } */
-/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 78 } */
+/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } interface_Derived } */
+/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } struct_Derived_0 } */
+/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } interface_Leaf } */
+/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } struct_Leaf_0 } */
+/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } Derived_t_def } */
+/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } Leaf_t_def } */
diff --git a/gcc/testsuite/obj-c++.dg/bitfield-4.mm b/gcc/testsuite/obj-c++.dg/bitfield-4.mm
index 9ffa398..1fd6d3a 100644
--- a/gcc/testsuite/obj-c++.dg/bitfield-4.mm
+++ b/gcc/testsuite/obj-c++.dg/bitfield-4.mm
@@ -25,13 +25,13 @@ enum Enum { one, two, three, four };
   signed e: 5;
   int f: 4;
   enum Enum g: 3;
-}
+} /* { dg-line interface_Derived } */
 @end
   
 /* Note that the semicolon after @defs(...) is optional.  */
 
 typedef struct { @defs(Base) } Base_t;  /* { dg-warning "padding struct size to alignment boundary" } */
-typedef struct { @defs(Derived); } Derived_t;
+typedef struct { @defs(Derived); } Derived_t; /* { dg-line Derived_t_def } */
 
 int main(void)
 {
@@ -52,5 +52,5 @@ int main(void)
 /* { dg-prune-output "In file included from" }  Ignore this message.  */
 /* { dg-bogus "padding struct to align" "PR23610" { target *-*-* } 0 } */
 
-/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 28 } */
-/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 34 } */
+/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } interface_Derived } */
+/* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } Derived_t_def } */
diff --git a/gcc/testsuite/obj-c++.dg/bitfield-5.mm b/gcc/testsuite/obj-c++.dg/bitfield-5.mm
index b6716df..3b0065d 100644
--- a/gcc/testsuite/obj-c++.dg/bitfield-5.mm
+++ b/gcc/testsuite/obj-c++.dg/bitfield-5.mm
@@ -10,20 +10,20 @@
 @end
 
 @interface WithBitfields: Base {
-  void *isa;
-  unsigned a: 3;
+  void *isa;     /* { dg-line WithBitfields_isa } */
+  unsigned a: 3; /* { dg-line WithBitfields_a } */
   signed b: 4;
-  int c: 5;
+  int c: 5;      /* { dg-line WithBitfields_c } */
 }
 @end
 
 @implementation WithBitfields {
   char *isa;  /* { dg-error "conflicting instance variable type .char \\*isa." } */
-  /* { dg-error "previous declaration of .void \\*isa." "" { target *-*-* } 13 } */
+  /* { dg-error "previous declaration of .void \\*isa." "" { target *-*-* } WithBitfields_isa } */
   unsigned a: 5;  /* { dg-error "conflicting instance variable type .unsigned( int)? a: 5." } */
-  /* { dg-error "previous declaration of .unsigned( int)? a: 3." "" { target *-*-* } 14 } */                     
+  /* { dg-error "previous declaration of .unsigned( int)? a: 3." "" { target *-*-* } WithBitfields_a } */
   signed b: 4;  /* This one is fine. */
   int c: 3;  /* { dg-error "conflicting instance variable type .int c: 3." } */
-  /* { dg-error "previous declaration of .int c: 5." "" { target *-*-* } 16 } */ 
+  /* { dg-error "previous declaration of .int c: 5." "" { target *-*-* } WithBitfields_c } */ 
 }
 @end
diff --git a/gcc/testsuite/obj-c++.dg/exceptions-3.mm b/gcc/testsuite/obj-c++.dg/exceptions-3.mm
index a9da9d6..c29752d 100644
--- a/gcc/testsuite/obj-c++.dg/exceptions-3.mm
+++ b/gcc/testsuite/obj-c++.dg/exceptions-3.mm
@@ -10,7 +10,7 @@
 @interface MyObject
 {
   Class isa;
-}
+} /* { dg-line interface_MyObject } */
 @end
 
 @implementation MyObject
@@ -71,8 +71,8 @@ int test (id object)
   @try { @throw object; }
   @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 *-*-* } 13 } */
-    }                     /* { dg-message "candidate" "" { target *-*-* } 13 } */
+      dummy++;            /* { dg-message "MyObject" "" { target *-*-* } interface_MyObject } */
+    }                     /* { dg-message "candidate" "" { target *-*-* } interface_MyObject } */
   @try { @throw object; }
   @catch (static MyObject *x) /* { dg-error "storage class" } */
     {
diff --git a/gcc/testsuite/obj-c++.dg/exceptions-5.mm b/gcc/testsuite/obj-c++.dg/exceptions-5.mm
index c1a2e4c..9e733a7 100644
--- a/gcc/testsuite/obj-c++.dg/exceptions-5.mm
+++ b/gcc/testsuite/obj-c++.dg/exceptions-5.mm
@@ -10,7 +10,7 @@
 @interface MyObject
 {
   Class isa;
-}
+} /* { dg-line interface_MyObject } */
 @end
 
 @implementation MyObject
@@ -71,8 +71,8 @@ int test (id object)
   @try { @throw object; }
   @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 *-*-* } 13 } */
-    }                     /* { dg-message "candidate" "" { target *-*-* } 13 } */
+      dummy++;            /* { dg-message "MyObject" "" { target *-*-* } interface_MyObject } */
+    }                     /* { dg-message "candidate" "" { target *-*-* } interface_MyObject } */
 
   @try { @throw object; }
   @catch (static MyObject *) /* { dg-error "storage class" } */
diff --git a/gcc/testsuite/obj-c++.dg/method-1.mm b/gcc/testsuite/obj-c++.dg/method-1.mm
index fdab6b7..7317ae2 100644
--- a/gcc/testsuite/obj-c++.dg/method-1.mm
+++ b/gcc/testsuite/obj-c++.dg/method-1.mm
@@ -22,9 +22,10 @@
 @end
 
 int main(void) {
-  id i = [(Int2 *)[Int1 classMethod1] int2Method];   /* { dg-bogus "may not respond to" } */
+  id i = [(Int2 *)[Int1 classMethod1] int2Method]; /* { dg-line i_def } */
+	/* { dg-bogus "may not respond to" "" { target *-*-* } i_def } */
   int j = [(Int2 *)[Int2 classMethod2] instanceMethod: 45];  /* { dg-bogus "multiple methods" } */
-	/* { dg-bogus "invalid conversion" "" { target *-*-* } 25 } */
-	/* { dg-bogus "invalid conversion" "" { target *-*-* } 25 } */
+	/* { dg-bogus "invalid conversion" "" { target *-*-* } i_def } */
+	/* { dg-bogus "invalid conversion" "" { target *-*-* } i_def } */
   return j;
 }
diff --git a/gcc/testsuite/obj-c++.dg/method-12.mm b/gcc/testsuite/obj-c++.dg/method-12.mm
index 1c78b12..2282dec 100644
--- a/gcc/testsuite/obj-c++.dg/method-12.mm
+++ b/gcc/testsuite/obj-c++.dg/method-12.mm
@@ -7,12 +7,12 @@
 #include <objc/Protocol.h>
 
 @interface Base
-- (unsigned)port;
+- (unsigned)port; /* { dg-line Base_port } */
 @end
 
 @interface Derived: Base
 - (Object *)port;
-+ (Protocol *)port;
++ (Protocol *)port; /* { dg-line Derived_port_last } */
 - (id)starboard;
 @end
 
@@ -20,8 +20,8 @@ void foo(void) {
   Class receiver;
 
   [receiver port];  /* { dg-warning "multiple methods named .\\+port. found" } */
-       /* { dg-message "using .\\-\\(unsigned( int)?\\)port." "" { target *-*-* } 10 } */
-       /* { dg-message "also found .\\+\\(Protocol \\*\\)port." "" { target *-*-* } 15 } */
+       /* { dg-message "using .\\-\\(unsigned( int)?\\)port." "" { target *-*-* } Base_port } */
+       /* { 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 } */
diff --git a/gcc/testsuite/obj-c++.dg/method-13.mm b/gcc/testsuite/obj-c++.dg/method-13.mm
index c2ae447..b0a1f59 100644
--- a/gcc/testsuite/obj-c++.dg/method-13.mm
+++ b/gcc/testsuite/obj-c++.dg/method-13.mm
@@ -5,11 +5,11 @@
 #include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 @interface Class1
-- (void)setWindow:(TestsuiteObject *)wdw;
+- (void)setWindow:(TestsuiteObject *)wdw; /* { dg-line Class1_setWindow } */
 @end
 
 @interface Class2
-- (void)setWindow:(Class1 *)window;
+- (void)setWindow:(Class1 *)window; /* { dg-line Class2_setWindow } */
 @end
 
 id foo(void) {
@@ -20,8 +20,8 @@ id foo(void) {
        /* { 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-message "using .\\-\\(void\\)setWindow:\\(TestsuiteObject \\*\\)wdw." "" { target *-*-* } 8 } */
-       /* { dg-message "also found .\\-\\(void\\)setWindow:\\(Class1 \\*\\)window." "" { target *-*-* } 12 } */
+       /* { dg-message "using .\\-\\(void\\)setWindow:\\(TestsuiteObject \\*\\)wdw." "" { target *-*-* } Class1_setWindow } */
+       /* { dg-message "also found .\\-\\(void\\)setWindow:\\(Class1 \\*\\)window." "" { target *-*-* } Class2_setWindow } */
 
   return obj;
 }
diff --git a/gcc/testsuite/obj-c++.dg/method-15.mm b/gcc/testsuite/obj-c++.dg/method-15.mm
index a5543d6..da851c9 100644
--- a/gcc/testsuite/obj-c++.dg/method-15.mm
+++ b/gcc/testsuite/obj-c++.dg/method-15.mm
@@ -6,15 +6,15 @@
 #include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 @protocol MyObject
-- (id)initWithData:(TestsuiteObject *)data;
+- (id)initWithData:(TestsuiteObject *)data; /* { dg-line MyObject_initWithData } */
 @end
 
 @protocol SomeOther
-- (id)initWithData:(int)data;
+- (id)initWithData:(int)data; /* { dg-line SomeOther_initWithData } */
 @end
 
 @protocol MyCoding
-- (id)initWithData:(id<MyObject, MyCoding>)data;
+- (id)initWithData:(id<MyObject, MyCoding>)data; /* { dg-line MyCoding_initWithData } */
 @end
 
 @interface NTGridDataObject: TestsuiteObject <MyCoding>
@@ -30,14 +30,14 @@
 }
 + (NTGridDataObject*)dataObject:(id<MyObject, MyCoding>)data
 {
-    NTGridDataObject *result = [[NTGridDataObject alloc] initWithData:data];
+    NTGridDataObject *result = [[NTGridDataObject alloc] initWithData:data]; /* { dg-line result_init } */
      /* { dg-warning "multiple methods named .\\-initWithData:. found" "" { target *-*-* } .-1 } */
-     /* { dg-message "using .\\-\\(id\\)initWithData:\\(TestsuiteObject \\*\\)data." "" { target *-*-* } 9 } */
-     /* { dg-message "also found .\\-\\(id\\)initWithData:\\(id <MyObject, MyCoding>\\)data." "" { target *-*-* } 17 } */
-     /* { dg-message "also found .\\-\\(id\\)initWithData:\\(int\\)data." "" { target *-*-* } 13 } */
+     /* { dg-message "using .\\-\\(id\\)initWithData:\\(TestsuiteObject \\*\\)data." "" { target *-*-* } MyObject_initWithData } */
+     /* { dg-message "also found .\\-\\(id\\)initWithData:\\(id <MyObject, MyCoding>\\)data." "" { target *-*-* } MyCoding_initWithData } */
+     /* { dg-message "also found .\\-\\(id\\)initWithData:\\(int\\)data." "" { target *-*-* } SomeOther_initWithData } */
 
      /* The following warning is a consequence of picking the "wrong" method signature.  */
-     /* { dg-warning "passing argument 1 of .initWithData:. from distinct Objective\\-C type" "" { target *-*-* } 33 } */
+     /* { dg-warning "passing argument 1 of .initWithData:. from distinct Objective\\-C type" "" { target *-*-* } result_init } */
     return result;
 }
 @end
diff --git a/gcc/testsuite/obj-c++.dg/method-16.mm b/gcc/testsuite/obj-c++.dg/method-16.mm
index d23bf77..4b691d8 100644
--- a/gcc/testsuite/obj-c++.dg/method-16.mm
+++ b/gcc/testsuite/obj-c++.dg/method-16.mm
@@ -10,25 +10,25 @@
 #include <objc/objc.h>
 
 @interface Object1
-- (void)initWithData:(Object1 *)data;
+- (void)initWithData:(Object1 *)data; /* { dg-line Object1_initWithData } */
 @end
 
 @interface Object2
-- (id)initWithData:(Object1 *)data;
+- (id)initWithData:(Object1 *)data; /* { dg-line Object2_initWithData } */
 @end
 
 @interface Object3
-- (id)initWithData:(Object2 *)data;
+- (id)initWithData:(Object2 *)data; /* { dg-line Object3_initWithData } */
 @end
 
 void foo(void) {
   id obj1, obj2 = 0;
-  obj2 = [obj1 initWithData: obj2];
+  obj2 = [obj1 initWithData: obj2]; /* { dg-line obj2_assign } */
      /* { dg-warning "multiple methods named .\\-initWithData:. found" "" { target *-*-* } .-1 } */
-     /* { dg-message "using .\\-\\(void\\)initWithData:\\(Object1 \\*\\)data." "" { target *-*-* } 13 } */
-     /* { dg-message "also found .\\-\\(id\\)initWithData:\\(Object1 \\*\\)data." "" { target *-*-* } 17 } */
-     /* { dg-message "also found .\\-\\(id\\)initWithData:\\(Object2 \\*\\)data." "" { target *-*-* } 21 } */
+     /* { dg-message "using .\\-\\(void\\)initWithData:\\(Object1 \\*\\)data." "" { target *-*-* } Object1_initWithData } */
+     /* { dg-message "also found .\\-\\(id\\)initWithData:\\(Object1 \\*\\)data." "" { target *-*-* } Object2_initWithData } */
+     /* { dg-message "also found .\\-\\(id\\)initWithData:\\(Object2 \\*\\)data." "" { target *-*-* } Object3_initWithData } */
 
      /* The following error is a consequence of picking the "wrong" method signature.  */
-     /* { dg-error "void value not ignored as it ought to be" "" { target *-*-* } 26 } */
+     /* { dg-error "void value not ignored as it ought to be" "" { target *-*-* } obj2_assign } */
 }
diff --git a/gcc/testsuite/obj-c++.dg/property/at-property-18.mm b/gcc/testsuite/obj-c++.dg/property/at-property-18.mm
index d318210..efd6f21 100644
--- a/gcc/testsuite/obj-c++.dg/property/at-property-18.mm
+++ b/gcc/testsuite/obj-c++.dg/property/at-property-18.mm
@@ -13,34 +13,34 @@
 {
   Class isa;
 }
-@property (assign) id a;
-@property (retain) id b;
-@property int c;
-@property (nonatomic) int d;
-@property int e;
-@property int f;
-@property int g;
+@property (assign) id a;     /* { dg-line MyRootClass_a } */
+@property (retain) id b;     /* { dg-line MyRootClass_b } */
+@property int c;             /* { dg-line MyRootClass_c } */
+@property (nonatomic) int d; /* { dg-line MyRootClass_d } */
+@property int e;             /* { dg-line MyRootClass_e } */
+@property int f;             /* { dg-line MyRootClass_f } */
+@property int g;             /* { dg-line MyRootClass_g } */
 @property (readonly) int h;
-@property (readonly,getter=getMe) int i;
+@property (readonly,getter=getMe) int i; /* { dg-line MyRootClass_i } */
 @property (nonatomic) float j;
 @end
 @interface MyRootClass (Category)
 @property (retain) id a;         /* { dg-warning "assign semantics attributes of property .a. conflict with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 16 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_a } */
 @property (assign) id b;         /* { dg-warning "assign semantics attributes of property .b. conflict with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 17 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_b } */
 @property (nonatomic) int c;     /* { dg-warning ".nonatomic. attribute of property .c. conflicts with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 18 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_c } */
 @property int d;                 /* { dg-warning ".nonatomic. attribute of property .d. conflicts with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 19 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_d } */
 @property (setter=setX:) int e;  /* { dg-warning ".setter. attribute of property .e. conflicts with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 20 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_e } */
 @property (getter=x) int f;      /* { dg-warning ".getter. attribute of property .f. conflicts with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 21 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_f } */
 @property (readonly) int g;      /* { dg-warning ".readonly. attribute of property .g. conflicts with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 22 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_g } */
 @property (readwrite) int h;     /* Ok */
 @property (readonly) int i;      /* { dg-warning ".getter. attribute of property .i. conflicts with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 24 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_i } */
 @property (nonatomic) float j;   /* Ok */
 @end
diff --git a/gcc/testsuite/obj-c++.dg/property/at-property-25.mm b/gcc/testsuite/obj-c++.dg/property/at-property-25.mm
index 422a29e..f5f4988 100644
--- a/gcc/testsuite/obj-c++.dg/property/at-property-25.mm
+++ b/gcc/testsuite/obj-c++.dg/property/at-property-25.mm
@@ -79,9 +79,8 @@
 
 @implementation MySubClass4
 @end
-
-/* { dg-warning "incomplete implementation of class" "" { target *-*-* } 81 } */
-/* { dg-warning "method definition for ..setCount1:. not found" "" { target *-*-* } 81 } */
-/* { dg-warning "method definition for ..count1. not found" "" { target *-*-* } 81 } */
-/* { dg-warning "method definition for ..count2. not found" "" { target *-*-* } 81 } */
-/* { dg-warning "class .MySubClass4. does not fully implement the .count2. protocol" "" { target *-*-* } 81 } */
+/* { dg-warning "incomplete implementation of class" "" { target *-*-* } .-1 } */
+/* { dg-warning "method definition for ..setCount1:. not found" "" { target *-*-* } .-2 } */
+/* { dg-warning "method definition for ..count1. not found" "" { target *-*-* } .-3 } */
+/* { dg-warning "method definition for ..count2. not found" "" { target *-*-* } .-4 } */
+/* { dg-warning "class .MySubClass4. does not fully implement the .count2. protocol" "" { target *-*-* } .-5 } */
diff --git a/gcc/testsuite/obj-c++.dg/property/at-property-5.mm b/gcc/testsuite/obj-c++.dg/property/at-property-5.mm
index c8eec2f..d4b33d9 100644
--- a/gcc/testsuite/obj-c++.dg/property/at-property-5.mm
+++ b/gcc/testsuite/obj-c++.dg/property/at-property-5.mm
@@ -23,12 +23,12 @@
 @property (retain) int property_c; /* { dg-error ".retain. attribute is only valid for Objective-C objects" } */
 @property (copy) int property_d; /* { dg-error ".copy. attribute is only valid for Objective-C objects" } */
 
-@property (retain) id property_e;
+@property (retain) id property_e; /* { dg-line property_e_first } */
 @property (retain) id property_f;
 @property (retain) id property_g;
 @property (retain) id property_h;
 @property (retain) id property_e; /* { dg-error "redeclaration of property .property_e." } */
-   			          /* { dg-message "originally specified here" "" { target *-*-* } 26 } */
+   			          /* { dg-message "originally specified here" "" { target *-*-* } property_e_first } */
 @end
 
 @property id test; /* { dg-error "misplaced .@property. Objective-C.. construct" } */
diff --git a/gcc/testsuite/obj-c++.dg/property/dynamic-2.mm b/gcc/testsuite/obj-c++.dg/property/dynamic-2.mm
index 49004ef..6a12c7f 100644
--- a/gcc/testsuite/obj-c++.dg/property/dynamic-2.mm
+++ b/gcc/testsuite/obj-c++.dg/property/dynamic-2.mm
@@ -38,8 +38,8 @@
 @end
 
 @implementation AnotherTest
-@dynamic one;
+@dynamic one; /* { dg-line dynamic_one_first } */
 @dynamic one; /* { dg-error "property .one. already specified in .@dynamic." } */
-              /* { dg-message "originally specified here" "" { target *-*-* } 41 } */
+              /* { dg-message "originally specified here" "" { target *-*-* } dynamic_one_first } */
 @dynamic three; /* { dg-error "no declaration of property .three. found in the interface" } */
 @end
diff --git a/gcc/testsuite/obj-c++.dg/property/property-neg-3.mm b/gcc/testsuite/obj-c++.dg/property/property-neg-3.mm
index 0b30931..cc9b068 100644
--- a/gcc/testsuite/obj-c++.dg/property/property-neg-3.mm
+++ b/gcc/testsuite/obj-c++.dg/property/property-neg-3.mm
@@ -8,7 +8,7 @@
 @end	
 
 @implementation  Person
-@dynamic firstName;
+@dynamic firstName;    /* { dg-line firstName_first } */
 @synthesize firstName; /* { dg-error "property .firstName. already specified in .@dynamic." } */
-                       /* { dg-message "originally specified here" "" { target *-*-* } 11 } */
+                       /* { dg-message "originally specified here" "" { target *-*-* } firstName_first } */
 @end
diff --git a/gcc/testsuite/obj-c++.dg/protocol-inheritance-1.mm b/gcc/testsuite/obj-c++.dg/protocol-inheritance-1.mm
index 6c23a46..5241b29 100644
--- a/gcc/testsuite/obj-c++.dg/protocol-inheritance-1.mm
+++ b/gcc/testsuite/obj-c++.dg/protocol-inheritance-1.mm
@@ -48,7 +48,6 @@
 
 @implementation MySubClass2
 @end /* Warnings here, below.  */
-
-/* { dg-warning "incomplete implementation of class .MySubClass2." "" { target *-*-* } 50 } */
-/* { dg-warning "method definition for .\\-method2. not found" "" { target *-*-* } 50 } */
-/* { dg-warning "class .MySubClass2. does not fully implement the .MyProtocol2. protocol" "" { target *-*-* } 50 } */
+/* { dg-warning "incomplete implementation of class .MySubClass2." "" { target *-*-* } .-1 } */
+/* { dg-warning "method definition for .\\-method2. not found" "" { target *-*-* } .-2 } */
+/* { dg-warning "class .MySubClass2. does not fully implement the .MyProtocol2. protocol" "" { target *-*-* } .-3 } */
diff --git a/gcc/testsuite/obj-c++.dg/protocol-inheritance-2.mm b/gcc/testsuite/obj-c++.dg/protocol-inheritance-2.mm
index d769949..74c9174 100644
--- a/gcc/testsuite/obj-c++.dg/protocol-inheritance-2.mm
+++ b/gcc/testsuite/obj-c++.dg/protocol-inheritance-2.mm
@@ -37,10 +37,9 @@
 
 @implementation MySubClass
 @end
-
-/* { dg-warning "incomplete implementation of class .MySubClass." "" { target *-*-* } 39 } */
-/* { dg-warning "method definition for .\\-method. not found" "" { target *-*-* } 39 } */
-/* { dg-warning "class .MySubClass. does not fully implement the .MyProtocol. protocol" "" { target *-*-* } 39 } */
+/* { dg-warning "incomplete implementation of class .MySubClass." "" { target *-*-* } .-1 } */
+/* { dg-warning "method definition for .\\-method. not found" "" { target *-*-* } .-2 } */
+/* { dg-warning "class .MySubClass. does not fully implement the .MyProtocol. protocol" "" { target *-*-* } .-3 } */
 
 
 /* The subclass instead does not inherit the method method2 (and does
@@ -51,7 +50,6 @@
 
 @implementation MySubClass2
 @end /* Warnings here, below.  */
-
-/* { dg-warning "incomplete implementation of class .MySubClass2." "" { target *-*-* } 53 } */
-/* { dg-warning "method definition for .\\-method2. not found" "" { target *-*-* } 53 } */
-/* { dg-warning "class .MySubClass2. does not fully implement the .MyProtocol2. protocol" "" { target *-*-* } 53 } */
+/* { dg-warning "incomplete implementation of class .MySubClass2." "" { target *-*-* } .-1 } */
+/* { dg-warning "method definition for .\\-method2. not found" "" { target *-*-* } .-2 } */
+/* { dg-warning "class .MySubClass2. does not fully implement the .MyProtocol2. protocol" "" { target *-*-* } .-3 } */
diff --git a/gcc/testsuite/obj-c++.dg/syntax-error-1.mm b/gcc/testsuite/obj-c++.dg/syntax-error-1.mm
index 1fe9ca3..320d56c 100644
--- a/gcc/testsuite/obj-c++.dg/syntax-error-1.mm
+++ b/gcc/testsuite/obj-c++.dg/syntax-error-1.mm
@@ -25,8 +25,9 @@ extern void NXLog(const char *, ...);
 
 @implementation Test2
 - (void) foo2
-  NXLog("Hello, world!"); /* { dg-error "expected .\{. before .NXLog." } */
+  NXLog("Hello, world!"); /* { dg-line Test2_foo2_body } */
+  /* { dg-error "expected .\{. before .NXLog." "" { target *-*-* } Test2_foo2_body } */
 } /* { dg-error "stray .\}. between Objective\\-C\\+\\+ methods" } */
 @end
 
-/* { dg-error "expected constructor, destructor, or type conversion before" "" { target *-*-* } 28 } */
+/* { dg-error "expected constructor, destructor, or type conversion before" "" { target *-*-* } Test2_foo2_body } */
diff --git a/gcc/testsuite/obj-c++.dg/try-catch-13.mm b/gcc/testsuite/obj-c++.dg/try-catch-13.mm
index aaf451e..050d811 100644
--- a/gcc/testsuite/obj-c++.dg/try-catch-13.mm
+++ b/gcc/testsuite/obj-c++.dg/try-catch-13.mm
@@ -9,7 +9,7 @@
 - (void) testSpoon;
 @end
 
-extern void some_func (int *);
+extern void some_func (int *); /* { dg-line some_func_decl } */
 
 @implementation TestMyTests
 - (void) testSpoon {
@@ -22,7 +22,7 @@ extern void some_func (int *);
       typeof(q) k = 66;
       some_func (&j);
 /* { dg-error "invalid conversion" "" { target *-*-* } .-1 } */ 
-/* { dg-message "initializing argument" "" { target *-*-* } 12 } */
+/* { dg-message "initializing argument" "" { target *-*-* } some_func_decl } */
       some_func (&k);
     }
     @catch (id exc) {
@@ -39,7 +39,7 @@ extern void some_func (int *);
 /* { dg-error "invalid conversion" "" { target *-*-* } .-1 } */
 /* The following is disabled as it is already checked above and the testsuites seems 
    to count multiple different identical errors on the same line only once */
-/*  dg-message "initializing argument" "" { target *-*-* } 12  */
+/*  dg-message "initializing argument" "" { target *-*-* } some_func_decl  */
     }
     @catch (id exc) {
       @throw;
@@ -54,7 +54,7 @@ extern void some_func (int *);
 /* { dg-error "invalid conversion" "" { target *-*-* } .-1 } */
 /* The following is disabled as it is already checked above and the testsuites seems 
    to count multiple different identical errors on the same line only once */
-/*  dg-message "initializing argument" "" { target *-*-* } 12  */
+/*  dg-message "initializing argument" "" { target *-*-* } some_func_decl  */
       some_func (&k);
     }
     @catch (id exc) {
diff --git a/gcc/testsuite/objc.dg/bitfield-4.m b/gcc/testsuite/objc.dg/bitfield-4.m
index 4883497..0f78e0b 100644
--- a/gcc/testsuite/objc.dg/bitfield-4.m
+++ b/gcc/testsuite/objc.dg/bitfield-4.m
@@ -9,20 +9,20 @@
 @end
 
 @interface WithBitfields: Base {
-  void *isa;
-  unsigned a: 3;
+  void *isa;     /* { dg-line WithBitFields_isa } */
+  unsigned a: 3; /* { dg-line WithBitFields_a } */
   signed b: 4;
-  int c: 5;
+  int c: 5;      /* { dg-line WithBitFields_c } */
 }
 @end
 
 @implementation WithBitfields {
   char *isa;  /* { dg-error "conflicting instance variable type .char \\*isa." } */
-  /* { dg-error "previous declaration of .void \\*isa." "" { target *-*-* } 12 } */
+  /* { dg-error "previous declaration of .void \\*isa." "" { target *-*-* } WithBitFields_isa } */
   unsigned a: 5;  /* { dg-error "conflicting instance variable type .unsigned( int)? a: 5." } */
-  /* { dg-error "previous declaration of .unsigned( int)? a: 3." "" { target *-*-* } 13 } */                     
+  /* { dg-error "previous declaration of .unsigned( int)? a: 3." "" { target *-*-* } WithBitFields_a } */
   signed b: 4;  /* This one is fine. */
   int c: 3;  /* { dg-error "conflicting instance variable type .int c: 3." } */
-  /* { dg-error "previous declaration of .int c: 5." "" { target *-*-* } 15 } */ 
+  /* { dg-error "previous declaration of .int c: 5." "" { target *-*-* } WithBitFields_c } */ 
 }
 @end
diff --git a/gcc/testsuite/objc.dg/class-1.m b/gcc/testsuite/objc.dg/class-1.m
index 64304f5..0504937 100644
--- a/gcc/testsuite/objc.dg/class-1.m
+++ b/gcc/testsuite/objc.dg/class-1.m
@@ -1,20 +1,21 @@
 /* Redeclarations of class names.  */
 /* { dg-do compile } */
 
-typedef int foo;
+typedef int foo; /* { dg-line foo_def } */
 
 @class foo;  /* { dg-error "redeclared as different kind of symbol" } */
-/* { dg-error "previous declaration of" "" { target *-*-* } 4 } */
+/* { dg-error "previous declaration of" "" { target *-*-* } foo_def } */
 
-typedef int bar;
+typedef int bar; /* { dg-line bar_def } */
 
 @interface bar
 @end  /* { dg-error "redeclared as different kind of symbol" } */
-/* { dg-error "previous declaration of" "" { target *-*-* } 9 } */
+/* { dg-error "previous declaration of" "" { target *-*-* } bar_def } */
 
-int glob;
+int glob; /* { dg-line glob_def } */
 
 @implementation glob
-@end  /* { dg-error "redeclared as different kind of symbol" } */
-/* { dg-error "previous declaration of" "" { target *-*-* } 15 } */
-/* { dg-warning "annot find interface declaration" "" { target *-*-* } 18 } */
+@end /* { dg-line glob_impl_end } */
+/* { dg-error "redeclared as different kind of symbol" "" { target *-*-* } glob_impl_end } */
+/* { dg-error "previous declaration of" "" { target *-*-* } glob_def } */
+/* { dg-warning "annot find interface declaration" "" { target *-*-* } glob_impl_end } */
diff --git a/gcc/testsuite/objc.dg/method-11.m b/gcc/testsuite/objc.dg/method-11.m
index ba027a9..6019880 100644
--- a/gcc/testsuite/objc.dg/method-11.m
+++ b/gcc/testsuite/objc.dg/method-11.m
@@ -9,25 +9,25 @@
 #include <objc/objc.h>
 
 @interface Object1
-- (void)initWithData:(Object1 *)data;
+- (void)initWithData:(Object1 *)data; /* { dg-line Object1_initWithData } */
 @end
 
 @interface Object2
-- (id)initWithData:(Object1 *)data;
+- (id)initWithData:(Object1 *)data; /* { dg-line Object2_initWithData } */
 @end
 
 @interface Object3
-- (id)initWithData:(Object2 *)data;
+- (id)initWithData:(Object2 *)data; /* { dg-line Object3_initWithData } */
 @end
 
 void foo(void) {
   id obj1, obj2 = 0;
-  obj2 = [obj1 initWithData: obj2];
+  obj2 = [obj1 initWithData: obj2]; /* { dg-line initWithData_message } */
      /* { dg-warning "multiple methods named .\\-initWithData:. found" "" { target *-*-* } .-1 } */
-     /* { dg-message "using .\\-\\(void\\)initWithData:\\(Object1 \\*\\)data." "" { target *-*-* } 12 } */
-     /* { dg-message "also found .\\-\\(id\\)initWithData:\\(Object1 \\*\\)data." "" { target *-*-* } 16 } */
-     /* { dg-message "also found .\\-\\(id\\)initWithData:\\(Object2 \\*\\)data." "" { target *-*-* } 20 } */
+     /* { dg-message "using .\\-\\(void\\)initWithData:\\(Object1 \\*\\)data." "" { target *-*-* } Object1_initWithData } */
+     /* { dg-message "also found .\\-\\(id\\)initWithData:\\(Object1 \\*\\)data." "" { target *-*-* } Object2_initWithData } */
+     /* { dg-message "also found .\\-\\(id\\)initWithData:\\(Object2 \\*\\)data." "" { target *-*-* } Object3_initWithData } */
 
      /* The following error is a consequence of picking the "wrong" method signature.  */
-     /* { dg-error "void value not ignored as it ought to be" "" { target *-*-* } 25 } */
+     /* { dg-error "void value not ignored as it ought to be" "" { target *-*-* } initWithData_message } */
 }
diff --git a/gcc/testsuite/objc.dg/method-6.m b/gcc/testsuite/objc.dg/method-6.m
index 1c87670..35676b1 100644
--- a/gcc/testsuite/objc.dg/method-6.m
+++ b/gcc/testsuite/objc.dg/method-6.m
@@ -14,12 +14,12 @@
 #endif
 
 @interface Base
-- (unsigned)port;
+- (unsigned)port; /* { dg-line Base_port } */
 @end
 
 @interface Derived: Base
 - (OBJECT *)port;
-+ (Protocol *)port;
++ (Protocol *)port; /* { dg-line Derived_port_last } */
 - (id)starboard;
 @end
 
@@ -27,8 +27,8 @@ void foo(void) {
   Class receiver;
 
   [receiver port];  /* { dg-warning "multiple methods named .\\+port. found" } */
-       /* { dg-message "using .\\-\\(unsigned( int)?\\)port." "" { target *-*-* } 17 } */
-       /* { dg-message "also found .\\+\\(Protocol \\*\\)port." "" { target *-*-* } 22 } */
+       /* { dg-message "using .\\-\\(unsigned( int)?\\)port." "" { target *-*-* } Base_port } */
+       /* { 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 } */
diff --git a/gcc/testsuite/objc.dg/method-7.m b/gcc/testsuite/objc.dg/method-7.m
index 32dad31..a5957ae 100644
--- a/gcc/testsuite/objc.dg/method-7.m
+++ b/gcc/testsuite/objc.dg/method-7.m
@@ -7,11 +7,11 @@
 #include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 @interface Class1
-- (void)setWindow:(TestsuiteObject *)wdw;
+- (void)setWindow:(TestsuiteObject *)wdw; /* { dg-line Class1_setWindow } */
 @end
 
 @interface Class2
-- (void)setWindow:(Class1 *)window;
+- (void)setWindow:(Class1 *)window;       /* { dg-line Class2_setWindow } */
 @end
 
 id foo(void) {
@@ -22,8 +22,8 @@ id foo(void) {
   /* { 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-message "using .\\-\\(void\\)setWindow:\\(TestsuiteObject \\*\\)wdw." "" { target *-*-* } 10 } */
-  /* { dg-message "also found .\\-\\(void\\)setWindow:\\(Class1 \\*\\)window." "" { target *-*-* } 14 } */
+  /* { dg-message "using .\\-\\(void\\)setWindow:\\(TestsuiteObject \\*\\)wdw." "" { target *-*-* } Class1_setWindow } */
+  /* { dg-message "also found .\\-\\(void\\)setWindow:\\(Class1 \\*\\)window." "" { target *-*-* } Class2_setWindow } */
 
   return obj;
 }
diff --git a/gcc/testsuite/objc.dg/method-9.m b/gcc/testsuite/objc.dg/method-9.m
index 3a6cf87..ce2d19b 100644
--- a/gcc/testsuite/objc.dg/method-9.m
+++ b/gcc/testsuite/objc.dg/method-9.m
@@ -8,15 +8,15 @@
 #include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 @protocol MyObject
-- (id)initWithData:(TestsuiteObject *)data;
+- (id)initWithData:(TestsuiteObject *)data; /* { dg-line MyObject_initWithData } */
 @end
 
 @protocol SomeOther
-- (id)initWithData:(int)data;
+- (id)initWithData:(int)data; /* { dg-line SomeOther_initWithData } */
 @end
 
 @protocol MyCoding
-- (id)initWithData:(id<MyObject, MyCoding>)data;
+- (id)initWithData:(id<MyObject, MyCoding>)data; /* { dg-line MyCoding_initWithData } */
 @end
 
 @interface NTGridDataObject: TestsuiteObject <MyCoding>
@@ -32,14 +32,14 @@
 }
 + (NTGridDataObject*)dataObject:(id<MyObject, MyCoding>)data
 {
-    NTGridDataObject *result = [[NTGridDataObject alloc] initWithData:data];
+  NTGridDataObject *result = [[NTGridDataObject alloc] initWithData:data]; /* { dg-line initWithData_message } */
     /* { dg-warning "multiple methods named .\\-initWithData:. found" "" { target *-*-* } .-1 } */
-    /* { dg-message "using .\\-\\(id\\)initWithData:\\(TestsuiteObject \\*\\)data." "" { target *-*-* } 11 } */
-    /* { dg-message "also found .\\-\\(id\\)initWithData:\\(id <MyObject, MyCoding>\\)data." "" { target *-*-* } 19 } */
-    /* { dg-message "also found .\\-\\(id\\)initWithData:\\(int\\)data." "" { target *-*-* } 15 } */
+    /* { dg-message "using .\\-\\(id\\)initWithData:\\(TestsuiteObject \\*\\)data." "" { target *-*-* } MyObject_initWithData } */
+    /* { dg-message "also found .\\-\\(id\\)initWithData:\\(id <MyObject, MyCoding>\\)data." "" { target *-*-* } MyCoding_initWithData } */
+    /* { dg-message "also found .\\-\\(id\\)initWithData:\\(int\\)data." "" { target *-*-* } SomeOther_initWithData } */
 
     /* The following warning is a consequence of picking the "wrong" method signature.  */
-    /* { dg-warning "passing argument 1 of .initWithData:. from distinct Objective\\-C type" "" { target *-*-* } 35 } */
+    /* { dg-warning "passing argument 1 of .initWithData:. from distinct Objective\\-C type" "" { target *-*-* } initWithData_message } */
     return result;
 }
 @end
diff --git a/gcc/testsuite/objc.dg/missing-proto-3.m b/gcc/testsuite/objc.dg/missing-proto-3.m
index cb7507e..05e1a25 100644
--- a/gcc/testsuite/objc.dg/missing-proto-3.m
+++ b/gcc/testsuite/objc.dg/missing-proto-3.m
@@ -19,8 +19,7 @@
   return self;
 }
 @end
-
-/* { dg-warning "incomplete implementation of class .MyClass." "" { target *-*-* } 21 } */
-/* { dg-warning "method definition for .\\-missingMethod1. not found" "" { target *-*-* } 21 } */
-/* { dg-warning "class .MyClass. does not fully implement the .DefinedProtocol. protocol" "" { target *-*-* } 21 } */
+/* { dg-warning "incomplete implementation of class .MyClass." "" { target *-*-* } .-1 } */
+/* { dg-warning "method definition for .\\-missingMethod1. not found" "" { target *-*-* } .-2 } */
+/* { dg-warning "class .MyClass. does not fully implement the .DefinedProtocol. protocol" "" { target *-*-* } .-3 } */
 
diff --git a/gcc/testsuite/objc.dg/naming-2.m b/gcc/testsuite/objc.dg/naming-2.m
index 6d08750..3dd59f9 100644
--- a/gcc/testsuite/objc.dg/naming-2.m
+++ b/gcc/testsuite/objc.dg/naming-2.m
@@ -6,7 +6,7 @@
 @end
 float Foo;  /* { dg-error "parse error|syntax error|expected|redeclaration" } */
 
-double Bar;
+double Bar; /* { dg-line Bar_decl } */
 @interface Bar
 @end  /* { dg-error "redeclared as different kind of symbol" } */
-/* { dg-error "previous declaration of" "" { target *-*-* } 9 } */
+/* { dg-error "previous declaration of" "" { target *-*-* } Bar_decl } */
diff --git a/gcc/testsuite/objc.dg/property/at-property-16.m b/gcc/testsuite/objc.dg/property/at-property-16.m
index 95f82e4..d61373a 100644
--- a/gcc/testsuite/objc.dg/property/at-property-16.m
+++ b/gcc/testsuite/objc.dg/property/at-property-16.m
@@ -10,15 +10,15 @@
 {
   Class isa;
 }
-@property (assign) id a;
-@property (retain) id b;
-@property int c;
-@property (nonatomic) int d;
-@property int e;
-@property int f;
-@property int g;
-@property (readonly) int h;
-@property (readonly,getter=getMe) int i;
+@property (assign) id a;     /* { dg-line MyRootClass_property_a } */
+@property (retain) id b;     /* { dg-line MyRootClass_property_b } */
+@property int c;             /* { dg-line MyRootClass_property_c } */
+@property (nonatomic) int d; /* { dg-line MyRootClass_property_d } */
+@property int e;             /* { dg-line MyRootClass_property_e } */
+@property int f;             /* { dg-line MyRootClass_property_f } */
+@property int g;             /* { dg-line MyRootClass_property_g } */
+@property (readonly) int h; 
+@property (readonly,getter=getMe) int i; /* { dg-line MyRootClass_property_i } */
 @end
 
 @interface MyClass : MyRootClass
@@ -35,21 +35,21 @@
 
 @interface MyClass2 : MyRootClass
 @property (retain) id a;         /* { dg-warning "assign semantics attributes of property .a. conflict with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 13 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_property_a } */
 @property (assign) id b;         /* { dg-warning "assign semantics attributes of property .b. conflict with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 14 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_property_b } */
 @property (nonatomic) int c;     /* { dg-warning ".nonatomic. attribute of property .c. conflicts with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 15 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_property_c } */
 @property int d;                 /* { dg-warning ".nonatomic. attribute of property .d. conflicts with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 16 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_property_d } */
 @property (setter=setX:) int e;  /* { dg-warning ".setter. attribute of property .e. conflicts with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 17 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_property_e } */
 @property (getter=x) int f;      /* { dg-warning ".getter. attribute of property .f. conflicts with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 18 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_property_f } */
 @property (readonly) int g;      /* { dg-warning ".readonly. attribute of property .g. conflicts with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 19 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_property_g } */
 @property (readwrite) int h;     /* Ok */
 @property (readonly) int i;      /* { dg-warning ".getter. attribute of property .i. conflicts with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 21 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_property_i } */
 @end
 
diff --git a/gcc/testsuite/objc.dg/property/at-property-18.m b/gcc/testsuite/objc.dg/property/at-property-18.m
index e6ffb39..20edb9b 100644
--- a/gcc/testsuite/objc.dg/property/at-property-18.m
+++ b/gcc/testsuite/objc.dg/property/at-property-18.m
@@ -13,35 +13,35 @@
 {
   Class isa;
 }
-@property (assign) id a;
-@property (retain) id b;
-@property int c;
-@property (nonatomic) int d;
-@property int e;
-@property int f;
-@property int g;
+@property (assign) id a;     /* { dg-line MyRootClass_property_a } */
+@property (retain) id b;     /* { dg-line MyRootClass_property_b } */
+@property int c;             /* { dg-line MyRootClass_property_c } */
+@property (nonatomic) int d; /* { dg-line MyRootClass_property_d } */
+@property int e;             /* { dg-line MyRootClass_property_e } */
+@property int f;             /* { dg-line MyRootClass_property_f } */
+@property int g;             /* { dg-line MyRootClass_property_g } */
 @property (readonly) int h;
-@property (readonly,getter=getMe) int i;
+@property (readonly,getter=getMe) int i; /* { dg-line MyRootClass_property_i } */
 @property (nonatomic) float j;
 @end
 
 @interface MyRootClass (Category)
 @property (retain) id a;         /* { dg-warning "assign semantics attributes of property .a. conflict with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 16 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_property_a } */
 @property (assign) id b;         /* { dg-warning "assign semantics attributes of property .b. conflict with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 17 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_property_b } */
 @property (nonatomic) int c;     /* { dg-warning ".nonatomic. attribute of property .c. conflicts with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 18 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_property_c } */
 @property int d;                 /* { dg-warning ".nonatomic. attribute of property .d. conflicts with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 19 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_property_d } */
 @property (setter=setX:) int e;  /* { dg-warning ".setter. attribute of property .e. conflicts with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 20 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_property_e } */
 @property (getter=x) int f;      /* { dg-warning ".getter. attribute of property .f. conflicts with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 21 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_property_f } */
 @property (readonly) int g;      /* { dg-warning ".readonly. attribute of property .g. conflicts with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 22 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_property_g } */
 @property (readwrite) int h;     /* Ok */
 @property (readonly) int i;      /* { dg-warning ".getter. attribute of property .i. conflicts with previous declaration" } */
-                                 /* { dg-message "originally specified here" "" { target *-*-* } 24 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } MyRootClass_property_i } */
 @property (nonatomic) float j;   /* Ok */
 @end
diff --git a/gcc/testsuite/objc.dg/property/at-property-25.m b/gcc/testsuite/objc.dg/property/at-property-25.m
index 422a29e..f5f4988 100644
--- a/gcc/testsuite/objc.dg/property/at-property-25.m
+++ b/gcc/testsuite/objc.dg/property/at-property-25.m
@@ -79,9 +79,8 @@
 
 @implementation MySubClass4
 @end
-
-/* { dg-warning "incomplete implementation of class" "" { target *-*-* } 81 } */
-/* { dg-warning "method definition for ..setCount1:. not found" "" { target *-*-* } 81 } */
-/* { dg-warning "method definition for ..count1. not found" "" { target *-*-* } 81 } */
-/* { dg-warning "method definition for ..count2. not found" "" { target *-*-* } 81 } */
-/* { dg-warning "class .MySubClass4. does not fully implement the .count2. protocol" "" { target *-*-* } 81 } */
+/* { dg-warning "incomplete implementation of class" "" { target *-*-* } .-1 } */
+/* { dg-warning "method definition for ..setCount1:. not found" "" { target *-*-* } .-2 } */
+/* { dg-warning "method definition for ..count1. not found" "" { target *-*-* } .-3 } */
+/* { dg-warning "method definition for ..count2. not found" "" { target *-*-* } .-4 } */
+/* { dg-warning "class .MySubClass4. does not fully implement the .count2. protocol" "" { target *-*-* } .-5 } */
diff --git a/gcc/testsuite/objc.dg/property/at-property-5.m b/gcc/testsuite/objc.dg/property/at-property-5.m
index 0e8aaa2..1267df3 100644
--- a/gcc/testsuite/objc.dg/property/at-property-5.m
+++ b/gcc/testsuite/objc.dg/property/at-property-5.m
@@ -23,12 +23,12 @@
 @property (retain) int property_c; /* { dg-error ".retain. attribute is only valid for Objective-C objects" } */
 @property (copy) int property_d; /* { dg-error ".copy. attribute is only valid for Objective-C objects" } */
 
-@property (retain) id property_e;
+@property (retain) id property_e; /* { dg-line property_e_first } */
 @property (retain) id property_f;
 @property (retain) id property_g;
 @property (retain) id property_h;
 @property (retain) id property_e; /* { dg-error "redeclaration of property .property_e." } */
-   			          /* { dg-message "originally specified here" "" { target *-*-* } 26 } */
+   			          /* { dg-message "originally specified here" "" { target *-*-* } property_e_first } */
 @end
 
 @property id test; /* { dg-error "property declaration not in .interface or .protocol context" } */
diff --git a/gcc/testsuite/objc.dg/property/dynamic-2.m b/gcc/testsuite/objc.dg/property/dynamic-2.m
index 203ba34..9866a39 100644
--- a/gcc/testsuite/objc.dg/property/dynamic-2.m
+++ b/gcc/testsuite/objc.dg/property/dynamic-2.m
@@ -38,8 +38,8 @@
 @end
 
 @implementation AnotherTest
-@dynamic one;
+@dynamic one; /* { dg-line dynamic_one_first } */
 @dynamic one; /* { dg-error "property .one. already specified in .@dynamic." } */
-              /* { dg-message "originally specified here" "" { target *-*-* } 41 } */
+              /* { dg-message "originally specified here" "" { target *-*-* } dynamic_one_first } */
 @dynamic three; /* { dg-error "no declaration of property .three. found in the interface" } */
 @end
diff --git a/gcc/testsuite/objc.dg/property/property-neg-3.m b/gcc/testsuite/objc.dg/property/property-neg-3.m
index 0b30931..1902018 100644
--- a/gcc/testsuite/objc.dg/property/property-neg-3.m
+++ b/gcc/testsuite/objc.dg/property/property-neg-3.m
@@ -8,7 +8,7 @@
 @end	
 
 @implementation  Person
-@dynamic firstName;
+@dynamic firstName;    /* { dg-line dynamic_firstName } */
 @synthesize firstName; /* { dg-error "property .firstName. already specified in .@dynamic." } */
-                       /* { dg-message "originally specified here" "" { target *-*-* } 11 } */
+                       /* { dg-message "originally specified here" "" { target *-*-* } dynamic_firstName } */
 @end
diff --git a/gcc/testsuite/objc.dg/protocol-inheritance-1.m b/gcc/testsuite/objc.dg/protocol-inheritance-1.m
index 6c23a46..5241b29 100644
--- a/gcc/testsuite/objc.dg/protocol-inheritance-1.m
+++ b/gcc/testsuite/objc.dg/protocol-inheritance-1.m
@@ -48,7 +48,6 @@
 
 @implementation MySubClass2
 @end /* Warnings here, below.  */
-
-/* { dg-warning "incomplete implementation of class .MySubClass2." "" { target *-*-* } 50 } */
-/* { dg-warning "method definition for .\\-method2. not found" "" { target *-*-* } 50 } */
-/* { dg-warning "class .MySubClass2. does not fully implement the .MyProtocol2. protocol" "" { target *-*-* } 50 } */
+/* { dg-warning "incomplete implementation of class .MySubClass2." "" { target *-*-* } .-1 } */
+/* { dg-warning "method definition for .\\-method2. not found" "" { target *-*-* } .-2 } */
+/* { dg-warning "class .MySubClass2. does not fully implement the .MyProtocol2. protocol" "" { target *-*-* } .-3 } */
diff --git a/gcc/testsuite/objc.dg/protocol-inheritance-2.m b/gcc/testsuite/objc.dg/protocol-inheritance-2.m
index d769949..74c9174 100644
--- a/gcc/testsuite/objc.dg/protocol-inheritance-2.m
+++ b/gcc/testsuite/objc.dg/protocol-inheritance-2.m
@@ -37,10 +37,9 @@
 
 @implementation MySubClass
 @end
-
-/* { dg-warning "incomplete implementation of class .MySubClass." "" { target *-*-* } 39 } */
-/* { dg-warning "method definition for .\\-method. not found" "" { target *-*-* } 39 } */
-/* { dg-warning "class .MySubClass. does not fully implement the .MyProtocol. protocol" "" { target *-*-* } 39 } */
+/* { dg-warning "incomplete implementation of class .MySubClass." "" { target *-*-* } .-1 } */
+/* { dg-warning "method definition for .\\-method. not found" "" { target *-*-* } .-2 } */
+/* { dg-warning "class .MySubClass. does not fully implement the .MyProtocol. protocol" "" { target *-*-* } .-3 } */
 
 
 /* The subclass instead does not inherit the method method2 (and does
@@ -51,7 +50,6 @@
 
 @implementation MySubClass2
 @end /* Warnings here, below.  */
-
-/* { dg-warning "incomplete implementation of class .MySubClass2." "" { target *-*-* } 53 } */
-/* { dg-warning "method definition for .\\-method2. not found" "" { target *-*-* } 53 } */
-/* { dg-warning "class .MySubClass2. does not fully implement the .MyProtocol2. protocol" "" { target *-*-* } 53 } */
+/* { dg-warning "incomplete implementation of class .MySubClass2." "" { target *-*-* } .-1 } */
+/* { dg-warning "method definition for .\\-method2. not found" "" { target *-*-* } .-2 } */
+/* { dg-warning "class .MySubClass2. does not fully implement the .MyProtocol2. protocol" "" { target *-*-* } .-3 } */

[-- Attachment #3: 0002-Replace-absolute-linenrs-in-gfortran.dg.patch --]
[-- Type: text/x-patch, Size: 2785 bytes --]

Replace absolute linenrs in gfortran.dg

2017-04-25  Tom de Vries  <tom@codesourcery.com>

	* gfortran.dg/gomp/appendix-a/a.24.1.f90: Replace absolute linenrs.
	* gfortran.dg/gomp/appendix-a/a.31.3.f90: Same.

---
 .../gfortran.dg/gomp/appendix-a/a.24.1.f90         |  6 ++---
 .../gfortran.dg/gomp/appendix-a/a.31.3.f90         | 26 ++++++++++------------
 2 files changed, 15 insertions(+), 17 deletions(-)

diff --git a/gcc/testsuite/gfortran.dg/gomp/appendix-a/a.24.1.f90 b/gcc/testsuite/gfortran.dg/gomp/appendix-a/a.24.1.f90
index 802577b..52a2cbb 100644
--- a/gcc/testsuite/gfortran.dg/gomp/appendix-a/a.24.1.f90
+++ b/gcc/testsuite/gfortran.dg/gomp/appendix-a/a.24.1.f90
@@ -11,7 +11,7 @@
 !$OMP THREADPRIVATE(/BLOCKX/)
       INTEGER I, J
       i=1
-!$OMP PARALLEL DEFAULT(NONE) PRIVATE(A) SHARED(Z) PRIVATE(J)
+!$OMP PARALLEL DEFAULT(NONE) PRIVATE(A) SHARED(Z) PRIVATE(J) ! { dg-line omp_parallel }
       J = OMP_GET_NUM_THREADS();
                ! O.K. - J is listed in PRIVATE clause
       A = Z(J) ! O.K. - A is listed in PRIVATE clause
@@ -19,8 +19,8 @@
       X=1      ! O.K. - X is THREADPRIVATE
       Z(I) = Y ! Error - cannot reference I or Y here
 ! { dg-error "'i' not specified" "" { target *-*-* } .-1 } */
-! { dg-error "enclosing 'parallel'" "" { target *-*-* } 14 } */
-! { dg-error "'y' not specified" "" { target *-*-* } 20 }  */
+! { dg-error "enclosing 'parallel'" "" { target *-*-* } omp_parallel } */
+! { dg-error "'y' not specified" "" { target *-*-* } .-3 }  */
 !$OMP DO firstprivate(y)
       DO I = 1,10
         Z(I) = Y ! O.K. - I is the loop iteration variable
diff --git a/gcc/testsuite/gfortran.dg/gomp/appendix-a/a.31.3.f90 b/gcc/testsuite/gfortran.dg/gomp/appendix-a/a.31.3.f90
index 598c904..7de656a 100644
--- a/gcc/testsuite/gfortran.dg/gomp/appendix-a/a.31.3.f90
+++ b/gcc/testsuite/gfortran.dg/gomp/appendix-a/a.31.3.f90
@@ -1,15 +1,13 @@
 ! { dg-do compile }
-        PROGRAM A31_3_WRONG
-        MAX = HUGE(0)
-        M=0
-        !$OMP PARALLEL DO REDUCTION(MAX: M) ! MAX is no longer the
-                                            ! intrinsic so this
-                                            ! is non-conforming
-! { dg-error "OMP DECLARE REDUCTION max not found" "" { target *-*-* } 5 } */
-        DO I = 1, 100
-        CALL SUB(M,I)
-        END DO
-        END PROGRAM A31_3_WRONG
-        SUBROUTINE SUB(M,I)
-        M = MAX(M,I)
-        END SUBROUTINE SUB
+PROGRAM A31_3_WRONG
+  MAX = HUGE(0)
+  M=0
+  !$OMP PARALLEL DO REDUCTION(MAX: M) ! MAX is no longer the intrinsic so this is non-conforming
+  ! { dg-error "OMP DECLARE REDUCTION max not found" "" { target *-*-* } .-1 } */
+  DO I = 1, 100
+     CALL SUB(M,I)
+  END DO
+END PROGRAM A31_3_WRONG
+SUBROUTINE SUB(M,I)
+  M = MAX(M,I)
+END SUBROUTINE SUB

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
  2017-04-27  9:03                       ` Tom de Vries
@ 2017-04-28  8:23                         ` Tom de Vries
  2017-04-28 14:31                         ` Tom de Vries
  1 sibling, 0 replies; 21+ messages in thread
From: Tom de Vries @ 2017-04-28  8:23 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Mike Stump, Rainer Orth, Richard Biener, GCC Patches

On 04/27/2017 10:43 AM, Tom de Vries wrote:
> On 04/26/2017 01:57 PM, Jakub Jelinek wrote:
>> On Wed, Apr 26, 2017 at 01:48:03PM +0200, Tom de Vries wrote:
>>> [ reposting with patch removed, was too big for gcc-patches@ ]
>>
>> I see in various tests you've ended up with ... { target ... } . }
>> I think it would be better to just use ... { target ... } }
>> in that case, . is the default, and if target is *-*-*, also remove the {
>> target ... }.
>>
>
> I've written sed commands for both simplifications, untested patches
> attached.

Tested the patches, fixed a bug in the script generating the first 
(replaced ' \. ' with ' \. \}' in search pattern).

Added ChangeLog and committed.

Thanks,
- Tom

[ Not reposting patches. The only changes to the previously posted 
patches are that the 
gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-{1,2}.c modifications 
are no longer there. ]

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
  2017-04-27  9:03                       ` Tom de Vries
  2017-04-28  8:23                         ` Tom de Vries
@ 2017-04-28 14:31                         ` Tom de Vries
  1 sibling, 0 replies; 21+ messages in thread
From: Tom de Vries @ 2017-04-28 14:31 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Mike Stump, Rainer Orth, Richard Biener, GCC Patches

[-- Attachment #1: Type: text/plain, Size: 736 bytes --]

On 04/27/2017 10:43 AM, Tom de Vries wrote:
> On 04/26/2017 01:57 PM, Jakub Jelinek wrote:
>> On Wed, Apr 26, 2017 at 01:48:03PM +0200, Tom de Vries wrote:
>>> [ reposting with patch removed, was too big for gcc-patches@ ]
>>
>> I see in various tests you've ended up with ... { target ... } . }
>> I think it would be better to just use ... { target ... } }
>> in that case, . is the default, and if target is *-*-*, also remove the {
>> target ... }.
>>
>
> I've written sed commands for both simplifications, untested patches
> attached.
>
> [ I suppose we could drop an empty comment as the last argument as well.
> { ... "" }. ]

Attached patch implements this. Tested with x86_64 -m64/-m32.

Committed as trivial.

Thanks,
- Tom


[-- Attachment #2: 0001-Remove-superfluous-in-dg-error-warning-message-bogus.patch --]
[-- Type: text/x-patch, Size: 186487 bytes --]

Remove superfluous "" in dg-(error|warning|message|bogus)

find $(find -type d -name testsuite) -type f \
     | xargs sed -ri 's#(dg-(error|warning|message|bogus).*)" "" \}#\1" }#'

2017-04-28  Tom de Vries  <tom@codesourcery.com>

	* g++.dg/abi/bitfield3.C: Remove superfluous "" in
	dg-(error|warning|message|bogus).
	* g++.dg/conversion/dr195-1.C: Same.
	* g++.dg/conversion/dr195.C: Same.
	* g++.dg/cpp0x/constexpr-reinterpret1.C: Same.
	* g++.dg/cpp0x/gen-attrs-14.C: Same.
	* g++.dg/cpp0x/inline-ns7.C: Same.
	* g++.dg/cpp0x/variadic105.C: Same.
	* g++.dg/cpp0x/variadic65.C: Same.
	* g++.dg/expr/call2.C: Same.
	* g++.dg/expr/member-of-incomplete-type-1.C: Same.
	* g++.dg/expr/pmf-1.C: Same.
	* g++.dg/ext/altivec-types-1.C: Same.
	* g++.dg/ext/altivec-types-2.C: Same.
	* g++.dg/ext/altivec-types-3.C: Same.
	* g++.dg/ext/attrib14.C: Same.
	* g++.dg/ext/complit1.C: Same.
	* g++.dg/ext/forscope2.C: Same.
	* g++.dg/ext/gnu-inline-global-reject.C: Same.
	* g++.dg/ext/label13.C: Same.
	* g++.dg/ext/member-attr.C: Same.
	* g++.dg/ext/visibility/anon7.C: Same.
	* g++.dg/ext/visibility/visibility-7.C: Same.
	* g++.dg/ext/vla2.C: Same.
	* g++.dg/inherit/access2.C: Same.
	* g++.dg/inherit/covariant12.C: Same.
	* g++.dg/inherit/covariant14.C: Same.
	* g++.dg/inherit/namespace-as-base.C: Same.
	* g++.dg/inherit/template-as-base.C: Same.
	* g++.dg/lookup/ambig1.C: Same.
	* g++.dg/lookup/ambig2.C: Same.
	* g++.dg/lookup/ambig3.C: Same.
	* g++.dg/lookup/class-member-1.C: Same.
	* g++.dg/lookup/conv-1.C: Same.
	* g++.dg/lookup/decl1.C: Same.
	* g++.dg/lookup/koenig1.C: Same.
	* g++.dg/lookup/scoped1.C: Same.
	* g++.dg/lookup/scoped2.C: Same.
	* g++.dg/lookup/two-stage4.C: Same.
	* g++.dg/lookup/used-before-declaration.C: Same.
	* g++.dg/lookup/using.C: Same.
	* g++.dg/lookup/using17.C: Same.
	* g++.dg/lookup/using2.C: Same.
	* g++.dg/other/abstract2.C: Same.
	* g++.dg/other/classkey1.C: Same.
	* g++.dg/other/component1.C: Same.
	* g++.dg/other/const1.C: Same.
	* g++.dg/other/const2.C: Same.
	* g++.dg/other/conversion1.C: Same.
	* g++.dg/other/do1.C: Same.
	* g++.dg/other/error1.C: Same.
	* g++.dg/other/error10.C: Same.
	* g++.dg/other/error3.C: Same.
	* g++.dg/other/error4.C: Same.
	* g++.dg/other/error5.C: Same.
	* g++.dg/other/error8.C: Same.
	* g++.dg/other/error9.C: Same.
	* g++.dg/other/field1.C: Same.
	* g++.dg/other/init1.C: Same.
	* g++.dg/other/ptrmem2.C: Same.
	* g++.dg/other/return1.C: Same.
	* g++.dg/overload/builtin3.C: Same.
	* g++.dg/overload/error1.C: Same.
	* g++.dg/overload/error2.C: Same.
	* g++.dg/overload/koenig2.C: Same.
	* g++.dg/overload/pmf1.C: Same.
	* g++.dg/parse/args1.C: Same.
	* g++.dg/parse/attr3.C: Same.
	* g++.dg/parse/constant4.C: Same.
	* g++.dg/parse/crash10.C: Same.
	* g++.dg/parse/crash18.C: Same.
	* g++.dg/parse/crash19.C: Same.
	* g++.dg/parse/crash20.C: Same.
	* g++.dg/parse/crash21.C: Same.
	* g++.dg/parse/crash22.C: Same.
	* g++.dg/parse/crash32.C: Same.
	* g++.dg/parse/decl-specifier-1.C: Same.
	* g++.dg/parse/error58.C: Same.
	* g++.dg/parse/local-class1.C: Same.
	* g++.dg/parse/non-dependent2.C: Same.
	* g++.dg/parse/parameter-declaration-1.C: Same.
	* g++.dg/parse/ptrmem2.C: Same.
	* g++.dg/parse/ptrmem3.C: Same.
	* g++.dg/parse/saved1.C: Same.
	* g++.dg/tc1/dr101.C: Same.
	* g++.dg/tc1/dr142.C: Same.
	* g++.dg/tc1/dr176.C: Same.
	* g++.dg/template/conv4.C: Same.
	* g++.dg/template/crash56.C: Same.
	* g++.dg/template/dependent-expr2.C: Same.
	* g++.dg/template/error1.C: Same.
	* g++.dg/template/error2.C: Same.
	* g++.dg/template/explicit6.C: Same.
	* g++.dg/template/init-list.C: Same.
	* g++.dg/template/local1.C: Same.
	* g++.dg/template/lookup2.C: Same.
	* g++.dg/template/meminit2.C: Same.
	* g++.dg/template/nontype25.C: Same.
	* g++.dg/template/ptrmem2.C: Same.
	* g++.dg/template/qualttp19.C: Same.
	* g++.dg/template/qualttp20.C: Same.
	* g++.dg/template/ttp3.C: Same.
	* g++.dg/template/unify4.C: Same.
	* g++.dg/template/unify6.C: Same.
	* g++.dg/template/unify7.C: Same.
	* g++.dg/template/warn1.C: Same.
	* g++.dg/tree-ssa/dom-invalid.C: Same.
	* g++.dg/ubsan/shift-1.C: Same.
	* g++.dg/warn/Wunused-2.C: Same.
	* g++.dg/warn/Wunused-4.C: Same.
	* g++.dg/warn/Wunused-6.C: Same.
	* g++.dg/warn/deprecated-6.C: Same.
	* g++.dg/warn/deprecated.C: Same.
	* g++.dg/warn/effc1.C: Same.
	* g++.dg/warn/effc3.C: Same.
	* g++.dg/warn/incomplete1.C: Same.
	* g++.dg/warn/inline1.C: Same.
	* g++.dg/warn/noeffect2.C: Same.
	* g++.dg/warn/noeffect4.C: Same.
	* g++.dg/warn/oldcast1.C: Same.
	* g++.dg/warn/sentinel.C: Same.
	* g++.dg/warn/unit-1.C: Same.
	* g++.old-deja/g++.pt/inherit2.C: Same.
	* g++.old-deja/g++.pt/overload8.C: Same.
	* gcc.dg/20000926-1.c: Same.
	* gcc.dg/20040223-1.c: Same.
	* gcc.dg/Warray-bounds-7.c: Same.
	* gcc.dg/alias-1.c: Same.
	* gcc.dg/alias-12.c: Same.
	* gcc.dg/alias-13.c: Same.
	* gcc.dg/alias-2.c: Same.
	* gcc.dg/array-13.c: Same.
	* gcc.dg/array-4.c: Same.
	* gcc.dg/attr-ifunc-2.c: Same.
	* gcc.dg/attr-invalid.c: Same.
	* gcc.dg/attr-noinline.c: Same.
	* gcc.dg/bitfld-2.c: Same.
	* gcc.dg/c90-const-expr-7.c: Same.
	* gcc.dg/c99-const-expr-7.c: Same.
	* gcc.dg/cpp/20000625-1.c: Same.
	* gcc.dg/cpp/charconst-4.c: Same.
	* gcc.dg/cpp/include2.c: Same.
	* gcc.dg/cpp/include2a.c: Same.
	* gcc.dg/decl-4.c: Same.
	* gcc.dg/deprecated-4.c: Same.
	* gcc.dg/deprecated.c: Same.
	* gcc.dg/dfp/altivec-types.c: Same.
	* gcc.dg/float-range-1.c: Same.
	* gcc.dg/pack-test-3.c: Same.
	* gcc.dg/pr11492.c: Same.
	* gcc.dg/pr15360-1.c: Same.
	* gcc.dg/pr37908.c: Same.
	* gcc.dg/pr53265.c: Same.
	* gcc.dg/pr57287-2.c: Same.
	* gcc.dg/pr57287.c: Same.
	* gcc.dg/redecl-1.c: Same.
	* gcc.dg/sync-3.c: Same.
	* gcc.dg/two-types-1.c: Same.
	* gcc.dg/two-types-2.c: Same.
	* gcc.dg/two-types-4.c: Same.
	* gcc.dg/two-types-5.c: Same.
	* gcc.dg/two-types-6.c: Same.
	* gcc.dg/two-types-7.c: Same.
	* gcc.dg/two-types-8.c: Same.
	* gcc.dg/two-types-9.c: Same.
	* gcc.dg/uninit-I.c: Same.
	* gcc.dg/uninit-pr19430.c: Same.
	* gcc.dg/visibility-7.c: Same.
	* gcc.dg/winline-10.c: Same.
	* gcc.dg/winline-2.c: Same.
	* gcc.dg/winline-3.c: Same.
	* gcc.dg/winline-9.c: Same.
	* gcc.target/i386/attr-returns_twice-1.c: Same.
	* gcc.target/i386/chkp-const-check-2.c: Same.
	* gcc.target/i386/chkp-label-address.c: Same.
	* gcc.target/i386/chkp-remove-bndint-2.c: Same.
	* gcc.target/i386/pr39162.c: Same.
	* gcc.target/i386/sse-5.c: Same.
	* gcc.target/powerpc/altivec-types-1.c: Same.
	* gcc.target/powerpc/altivec-types-2.c: Same.
	* gcc.target/powerpc/altivec-types-3.c: Same.
	* gcc.target/powerpc/float128-mix.c: Same.
	* gcc.target/powerpc/no-r11-3.c: Same.
	* gcc.target/spu/Wmain.c: Same.
	* gcc.target/spu/ea/errors2.c: Same.
	* gfortran.dg/assignment_1.f90: Same.
	* gfortran.dg/common_3.f90: Same.
	* gfortran.dg/der_io_1.f90: Same.
	* gfortran.dg/g77/20030326-1.f: Same.
	* gfortran.dg/g77/9263.f: Same.
	* gfortran.dg/g77/960317-1.f: Same.
	* gfortran.dg/g77/970625-2.f: Same.
	* gfortran.dg/g77/980615-0.f: Same.
	* gfortran.dg/g77/check0.f: Same.
	* gfortran.dg/g77/dnrm2.f: Same.
	* gfortran.dg/g77/pr9258.f: Same.
	* gfortran.dg/ichar_1.f90: Same.
	* gfortran.dg/interface_1.f90: Same.
	* gfortran.dg/namelist_1.f90: Same.
	* gfortran.dg/namelist_2.f90: Same.
	* gfortran.dg/namelist_3.f90: Same.
	* gfortran.dg/namelist_print_2.f: Same.
	* gfortran.dg/oldstyle_1.f90: Same.
	* gfortran.dg/runtime_warning_1.f90: Same.
	* gfortran.dg/underflow.f90: Same.
	* gnat.dg/specs/integer_value.ads: Same.
	* obj-c++.dg/fsf-package-0.m: Same.
	* objc.dg/two-types-1.m: Same.

---
 gcc/testsuite/g++.dg/abi/bitfield3.C               |   4 +-
 gcc/testsuite/g++.dg/conversion/dr195-1.C          |   4 +-
 gcc/testsuite/g++.dg/conversion/dr195.C            |   4 +-
 .../g++.dg/cpp0x/constexpr-reinterpret1.C          |   2 +-
 gcc/testsuite/g++.dg/cpp0x/gen-attrs-14.C          |   2 +-
 gcc/testsuite/g++.dg/cpp0x/inline-ns7.C            |   6 +-
 gcc/testsuite/g++.dg/cpp0x/variadic105.C           |   2 +-
 gcc/testsuite/g++.dg/cpp0x/variadic65.C            |   2 +-
 gcc/testsuite/g++.dg/expr/call2.C                  |   2 +-
 .../g++.dg/expr/member-of-incomplete-type-1.C      |   2 +-
 gcc/testsuite/g++.dg/expr/pmf-1.C                  |   6 +-
 gcc/testsuite/g++.dg/ext/altivec-types-1.C         | 110 ++++++++++-----------
 gcc/testsuite/g++.dg/ext/altivec-types-2.C         |  14 +--
 gcc/testsuite/g++.dg/ext/altivec-types-3.C         |  14 +--
 gcc/testsuite/g++.dg/ext/attrib14.C                |   2 +-
 gcc/testsuite/g++.dg/ext/complit1.C                |   2 +-
 gcc/testsuite/g++.dg/ext/forscope2.C               |   4 +-
 .../g++.dg/ext/gnu-inline-global-reject.C          |  36 +++----
 gcc/testsuite/g++.dg/ext/label13.C                 |   2 +-
 gcc/testsuite/g++.dg/ext/member-attr.C             |   4 +-
 gcc/testsuite/g++.dg/ext/visibility/anon7.C        |   2 +-
 gcc/testsuite/g++.dg/ext/visibility/visibility-7.C |   4 +-
 gcc/testsuite/g++.dg/ext/vla2.C                    |   2 +-
 gcc/testsuite/g++.dg/inherit/access2.C             |   2 +-
 gcc/testsuite/g++.dg/inherit/covariant12.C         |   4 +-
 gcc/testsuite/g++.dg/inherit/covariant14.C         |   4 +-
 gcc/testsuite/g++.dg/inherit/namespace-as-base.C   |   2 +-
 gcc/testsuite/g++.dg/inherit/template-as-base.C    |   2 +-
 gcc/testsuite/g++.dg/lookup/ambig1.C               |   4 +-
 gcc/testsuite/g++.dg/lookup/ambig2.C               |   4 +-
 gcc/testsuite/g++.dg/lookup/ambig3.C               |   4 +-
 gcc/testsuite/g++.dg/lookup/class-member-1.C       |   2 +-
 gcc/testsuite/g++.dg/lookup/conv-1.C               |   6 +-
 gcc/testsuite/g++.dg/lookup/decl1.C                |  10 +-
 gcc/testsuite/g++.dg/lookup/koenig1.C              |   4 +-
 gcc/testsuite/g++.dg/lookup/scoped1.C              |   4 +-
 gcc/testsuite/g++.dg/lookup/scoped2.C              |   2 +-
 gcc/testsuite/g++.dg/lookup/two-stage4.C           |   2 +-
 .../g++.dg/lookup/used-before-declaration.C        |   2 +-
 gcc/testsuite/g++.dg/lookup/using.C                |   2 +-
 gcc/testsuite/g++.dg/lookup/using17.C              |   2 +-
 gcc/testsuite/g++.dg/lookup/using2.C               |  10 +-
 gcc/testsuite/g++.dg/other/abstract2.C             |   2 +-
 gcc/testsuite/g++.dg/other/classkey1.C             |   8 +-
 gcc/testsuite/g++.dg/other/component1.C            |  12 +--
 gcc/testsuite/g++.dg/other/const1.C                |   2 +-
 gcc/testsuite/g++.dg/other/const2.C                |   2 +-
 gcc/testsuite/g++.dg/other/conversion1.C           |   2 +-
 gcc/testsuite/g++.dg/other/do1.C                   |   2 +-
 gcc/testsuite/g++.dg/other/error1.C                |   2 +-
 gcc/testsuite/g++.dg/other/error10.C               |   2 +-
 gcc/testsuite/g++.dg/other/error3.C                |   2 +-
 gcc/testsuite/g++.dg/other/error4.C                |   4 +-
 gcc/testsuite/g++.dg/other/error5.C                |   4 +-
 gcc/testsuite/g++.dg/other/error8.C                |   2 +-
 gcc/testsuite/g++.dg/other/error9.C                |   4 +-
 gcc/testsuite/g++.dg/other/field1.C                |   8 +-
 gcc/testsuite/g++.dg/other/init1.C                 |   2 +-
 gcc/testsuite/g++.dg/other/ptrmem2.C               |   4 +-
 gcc/testsuite/g++.dg/other/return1.C               |   2 +-
 gcc/testsuite/g++.dg/overload/builtin3.C           |   2 +-
 gcc/testsuite/g++.dg/overload/error1.C             |   4 +-
 gcc/testsuite/g++.dg/overload/error2.C             |   4 +-
 gcc/testsuite/g++.dg/overload/koenig2.C            |   2 +-
 gcc/testsuite/g++.dg/overload/pmf1.C               |   2 +-
 gcc/testsuite/g++.dg/parse/args1.C                 |   2 +-
 gcc/testsuite/g++.dg/parse/attr3.C                 |   4 +-
 gcc/testsuite/g++.dg/parse/constant4.C             |   4 +-
 gcc/testsuite/g++.dg/parse/crash10.C               |   2 +-
 gcc/testsuite/g++.dg/parse/crash18.C               |   2 +-
 gcc/testsuite/g++.dg/parse/crash19.C               |   2 +-
 gcc/testsuite/g++.dg/parse/crash20.C               |   4 +-
 gcc/testsuite/g++.dg/parse/crash21.C               |   4 +-
 gcc/testsuite/g++.dg/parse/crash22.C               |   4 +-
 gcc/testsuite/g++.dg/parse/crash32.C               |   2 +-
 gcc/testsuite/g++.dg/parse/decl-specifier-1.C      |   2 +-
 gcc/testsuite/g++.dg/parse/error58.C               |   2 +-
 gcc/testsuite/g++.dg/parse/local-class1.C          |   2 +-
 gcc/testsuite/g++.dg/parse/non-dependent2.C        |   8 +-
 .../g++.dg/parse/parameter-declaration-1.C         |   2 +-
 gcc/testsuite/g++.dg/parse/ptrmem2.C               |   2 +-
 gcc/testsuite/g++.dg/parse/ptrmem3.C               |   2 +-
 gcc/testsuite/g++.dg/parse/saved1.C                |   6 +-
 gcc/testsuite/g++.dg/tc1/dr101.C                   |   4 +-
 gcc/testsuite/g++.dg/tc1/dr142.C                   |  10 +-
 gcc/testsuite/g++.dg/tc1/dr176.C                   |   4 +-
 gcc/testsuite/g++.dg/template/conv4.C              |   2 +-
 gcc/testsuite/g++.dg/template/crash56.C            |   2 +-
 gcc/testsuite/g++.dg/template/dependent-expr2.C    |   2 +-
 gcc/testsuite/g++.dg/template/error1.C             |   4 +-
 gcc/testsuite/g++.dg/template/error2.C             |   6 +-
 gcc/testsuite/g++.dg/template/explicit6.C          |   2 +-
 gcc/testsuite/g++.dg/template/init-list.C          |   2 +-
 gcc/testsuite/g++.dg/template/local1.C             |   2 +-
 gcc/testsuite/g++.dg/template/lookup2.C            |   4 +-
 gcc/testsuite/g++.dg/template/meminit2.C           |   2 +-
 gcc/testsuite/g++.dg/template/nontype25.C          |   2 +-
 gcc/testsuite/g++.dg/template/ptrmem2.C            |   2 +-
 gcc/testsuite/g++.dg/template/qualttp19.C          |   2 +-
 gcc/testsuite/g++.dg/template/qualttp20.C          |   4 +-
 gcc/testsuite/g++.dg/template/ttp3.C               |   4 +-
 gcc/testsuite/g++.dg/template/unify4.C             |   2 +-
 gcc/testsuite/g++.dg/template/unify6.C             |   2 +-
 gcc/testsuite/g++.dg/template/unify7.C             |   2 +-
 gcc/testsuite/g++.dg/template/warn1.C              |   4 +-
 gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C        |   2 +-
 gcc/testsuite/g++.dg/ubsan/shift-1.C               |  12 +--
 gcc/testsuite/g++.dg/warn/Wunused-2.C              |   2 +-
 gcc/testsuite/g++.dg/warn/Wunused-4.C              |   4 +-
 gcc/testsuite/g++.dg/warn/Wunused-6.C              |   4 +-
 gcc/testsuite/g++.dg/warn/deprecated-6.C           |  46 ++++-----
 gcc/testsuite/g++.dg/warn/deprecated.C             |  46 ++++-----
 gcc/testsuite/g++.dg/warn/effc1.C                  |   2 +-
 gcc/testsuite/g++.dg/warn/effc3.C                  |   6 +-
 gcc/testsuite/g++.dg/warn/incomplete1.C            |   4 +-
 gcc/testsuite/g++.dg/warn/inline1.C                |   4 +-
 gcc/testsuite/g++.dg/warn/noeffect2.C              |   6 +-
 gcc/testsuite/g++.dg/warn/noeffect4.C              |   8 +-
 gcc/testsuite/g++.dg/warn/oldcast1.C               |   2 +-
 gcc/testsuite/g++.dg/warn/sentinel.C               |   4 +-
 gcc/testsuite/g++.dg/warn/unit-1.C                 |   2 +-
 gcc/testsuite/g++.old-deja/g++.pt/inherit2.C       |   8 +-
 gcc/testsuite/g++.old-deja/g++.pt/overload8.C      |   2 +-
 gcc/testsuite/gcc.dg/20000926-1.c                  |   2 +-
 gcc/testsuite/gcc.dg/20040223-1.c                  |  10 +-
 gcc/testsuite/gcc.dg/Warray-bounds-7.c             |   2 +-
 gcc/testsuite/gcc.dg/alias-1.c                     |   4 +-
 gcc/testsuite/gcc.dg/alias-12.c                    |   2 +-
 gcc/testsuite/gcc.dg/alias-13.c                    |   2 +-
 gcc/testsuite/gcc.dg/alias-2.c                     |   2 +-
 gcc/testsuite/gcc.dg/array-13.c                    |   2 +-
 gcc/testsuite/gcc.dg/array-4.c                     |   2 +-
 gcc/testsuite/gcc.dg/attr-ifunc-2.c                |  10 +-
 gcc/testsuite/gcc.dg/attr-invalid.c                |  48 ++++-----
 gcc/testsuite/gcc.dg/attr-noinline.c               |  30 +++---
 gcc/testsuite/gcc.dg/bitfld-2.c                    |   8 +-
 gcc/testsuite/gcc.dg/c90-const-expr-7.c            |   2 +-
 gcc/testsuite/gcc.dg/c99-const-expr-7.c            |   2 +-
 gcc/testsuite/gcc.dg/cpp/20000625-1.c              |   2 +-
 gcc/testsuite/gcc.dg/cpp/charconst-4.c             |   4 +-
 gcc/testsuite/gcc.dg/cpp/include2.c                |   2 +-
 gcc/testsuite/gcc.dg/cpp/include2a.c               |   2 +-
 gcc/testsuite/gcc.dg/decl-4.c                      |   8 +-
 gcc/testsuite/gcc.dg/deprecated-4.c                |  38 +++----
 gcc/testsuite/gcc.dg/deprecated.c                  |  46 ++++-----
 gcc/testsuite/gcc.dg/dfp/altivec-types.c           |   6 +-
 gcc/testsuite/gcc.dg/float-range-1.c               |   2 +-
 gcc/testsuite/gcc.dg/pack-test-3.c                 |   6 +-
 gcc/testsuite/gcc.dg/pr11492.c                     |   2 +-
 gcc/testsuite/gcc.dg/pr15360-1.c                   |   4 +-
 gcc/testsuite/gcc.dg/pr37908.c                     |   2 +-
 gcc/testsuite/gcc.dg/pr53265.c                     |   6 +-
 gcc/testsuite/gcc.dg/pr57287-2.c                   |   2 +-
 gcc/testsuite/gcc.dg/pr57287.c                     |   2 +-
 gcc/testsuite/gcc.dg/redecl-1.c                    |   6 +-
 gcc/testsuite/gcc.dg/sync-3.c                      |   4 +-
 gcc/testsuite/gcc.dg/two-types-1.c                 |   2 +-
 gcc/testsuite/gcc.dg/two-types-2.c                 |   2 +-
 gcc/testsuite/gcc.dg/two-types-4.c                 |   2 +-
 gcc/testsuite/gcc.dg/two-types-5.c                 |   4 +-
 gcc/testsuite/gcc.dg/two-types-6.c                 |   4 +-
 gcc/testsuite/gcc.dg/two-types-7.c                 |   6 +-
 gcc/testsuite/gcc.dg/two-types-8.c                 |   4 +-
 gcc/testsuite/gcc.dg/two-types-9.c                 |   4 +-
 gcc/testsuite/gcc.dg/uninit-I.c                    |   2 +-
 gcc/testsuite/gcc.dg/uninit-pr19430.c              |   2 +-
 gcc/testsuite/gcc.dg/visibility-7.c                |   4 +-
 gcc/testsuite/gcc.dg/winline-10.c                  |   2 +-
 gcc/testsuite/gcc.dg/winline-2.c                   |   2 +-
 gcc/testsuite/gcc.dg/winline-3.c                   |   2 +-
 gcc/testsuite/gcc.dg/winline-9.c                   |   2 +-
 .../gcc.target/i386/attr-returns_twice-1.c         |   2 +-
 gcc/testsuite/gcc.target/i386/chkp-const-check-2.c |   2 +-
 gcc/testsuite/gcc.target/i386/chkp-label-address.c |   2 +-
 .../gcc.target/i386/chkp-remove-bndint-2.c         |   2 +-
 gcc/testsuite/gcc.target/i386/pr39162.c            |   2 +-
 gcc/testsuite/gcc.target/i386/sse-5.c              |   2 +-
 gcc/testsuite/gcc.target/powerpc/altivec-types-1.c | 108 ++++++++++----------
 gcc/testsuite/gcc.target/powerpc/altivec-types-2.c |  14 +--
 gcc/testsuite/gcc.target/powerpc/altivec-types-3.c |  14 +--
 gcc/testsuite/gcc.target/powerpc/float128-mix.c    |   4 +-
 gcc/testsuite/gcc.target/powerpc/no-r11-3.c        |   2 +-
 gcc/testsuite/gcc.target/spu/Wmain.c               |   2 +-
 gcc/testsuite/gcc.target/spu/ea/errors2.c          |   2 +-
 gcc/testsuite/gfortran.dg/assignment_1.f90         |   2 +-
 gcc/testsuite/gfortran.dg/common_3.f90             |   2 +-
 gcc/testsuite/gfortran.dg/der_io_1.f90             |   2 +-
 gcc/testsuite/gfortran.dg/g77/20030326-1.f         |   2 +-
 gcc/testsuite/gfortran.dg/g77/9263.f               |   6 +-
 gcc/testsuite/gfortran.dg/g77/960317-1.f           |   2 +-
 gcc/testsuite/gfortran.dg/g77/970625-2.f           |  14 +--
 gcc/testsuite/gfortran.dg/g77/980615-0.f           |   2 +-
 gcc/testsuite/gfortran.dg/g77/check0.f             |   4 +-
 gcc/testsuite/gfortran.dg/g77/dnrm2.f              |  10 +-
 gcc/testsuite/gfortran.dg/g77/pr9258.f             |   8 +-
 gcc/testsuite/gfortran.dg/ichar_1.f90              |  20 ++--
 gcc/testsuite/gfortran.dg/interface_1.f90          |   2 +-
 gcc/testsuite/gfortran.dg/namelist_1.f90           |   2 +-
 gcc/testsuite/gfortran.dg/namelist_2.f90           |   2 +-
 gcc/testsuite/gfortran.dg/namelist_3.f90           |   2 +-
 gcc/testsuite/gfortran.dg/namelist_print_2.f       |   2 +-
 gcc/testsuite/gfortran.dg/oldstyle_1.f90           |   6 +-
 gcc/testsuite/gfortran.dg/runtime_warning_1.f90    |   2 +-
 gcc/testsuite/gfortran.dg/underflow.f90            |   2 +-
 gcc/testsuite/gnat.dg/specs/integer_value.ads      |   2 +-
 gcc/testsuite/obj-c++.dg/fsf-package-0.m           |   2 +-
 gcc/testsuite/objc.dg/two-types-1.m                |   4 +-
 207 files changed, 625 insertions(+), 625 deletions(-)

diff --git a/gcc/testsuite/g++.dg/abi/bitfield3.C b/gcc/testsuite/g++.dg/abi/bitfield3.C
index 6908ab6..fe9528f 100644
--- a/gcc/testsuite/g++.dg/abi/bitfield3.C
+++ b/gcc/testsuite/g++.dg/abi/bitfield3.C
@@ -11,7 +11,7 @@
 struct A
 {
   char a;
-  int b : 224;	// { dg-warning "exceeds its type" "" }
+  int b : 224;	// { dg-warning "exceeds its type" }
   char c;
 } a, a4[4];
 
@@ -39,7 +39,7 @@ struct D
 struct E
 {
   char m;
-  long long n : 160;	// { dg-warning "exceeds its type" "" }
+  long long n : 160;	// { dg-warning "exceeds its type" }
   char o;
 } e, e4[4];
 
diff --git a/gcc/testsuite/g++.dg/conversion/dr195-1.C b/gcc/testsuite/g++.dg/conversion/dr195-1.C
index ca38580..8b3f285 100644
--- a/gcc/testsuite/g++.dg/conversion/dr195-1.C
+++ b/gcc/testsuite/g++.dg/conversion/dr195-1.C
@@ -29,6 +29,6 @@ void foo ()
   po = reinterpret_cast <PO>(pf);
 
   /* These will never be ok, as they are implicit.  */
-  pv = pf; // { dg-error "invalid conversion" "" }
-  pf = pv; // { dg-error "invalid conversion" "" }
+  pv = pf; // { dg-error "invalid conversion" }
+  pf = pv; // { dg-error "invalid conversion" }
 }
diff --git a/gcc/testsuite/g++.dg/conversion/dr195.C b/gcc/testsuite/g++.dg/conversion/dr195.C
index cb26623..f914214 100644
--- a/gcc/testsuite/g++.dg/conversion/dr195.C
+++ b/gcc/testsuite/g++.dg/conversion/dr195.C
@@ -27,6 +27,6 @@ void foo ()
   po = reinterpret_cast <PO>(pf);
 
   /* These will never be ok, as they are implicit.  */
-  pv = pf; // { dg-error "invalid conversion" "" }
-  pf = pv; // { dg-error "invalid conversion" "" }
+  pv = pf; // { dg-error "invalid conversion" }
+  pf = pv; // { dg-error "invalid conversion" }
 }
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-reinterpret1.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-reinterpret1.C
index 0ea42a0..d2ee2ba 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-reinterpret1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-reinterpret1.C
@@ -16,7 +16,7 @@ public:
 
   constexpr static Inner & getInner()
   /* I am surprised this is considered a constexpr */
-  { return *((Inner *)4); } // { dg-error "reinterpret_cast" "" }
+  { return *((Inner *)4); } // { dg-error "reinterpret_cast" }
 };
 
 B B::instance;
diff --git a/gcc/testsuite/g++.dg/cpp0x/gen-attrs-14.C b/gcc/testsuite/g++.dg/cpp0x/gen-attrs-14.C
index d646d27..a512df7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/gen-attrs-14.C
+++ b/gcc/testsuite/g++.dg/cpp0x/gen-attrs-14.C
@@ -3,7 +3,7 @@
 // The bogus attribute is ignored, but was in TYPE_ATTRIBUTES during
 // parsing of the class, causing some variants to have it and some not.
 
-struct [[gnu::bogus]] A	// { dg-warning "ignored" "" }
+struct [[gnu::bogus]] A	// { dg-warning "ignored" }
 {
     virtual ~A();
     void foo(const A&);
diff --git a/gcc/testsuite/g++.dg/cpp0x/inline-ns7.C b/gcc/testsuite/g++.dg/cpp0x/inline-ns7.C
index d9f99a8..16240af 100644
--- a/gcc/testsuite/g++.dg/cpp0x/inline-ns7.C
+++ b/gcc/testsuite/g++.dg/cpp0x/inline-ns7.C
@@ -5,12 +5,12 @@
 
 namespace foo {
   inline namespace foo_impl {
-    class T; // { dg-message "T" "" }
+    class T; // { dg-message "T" }
   }
 }
 namespace bar {
   inline namespace bar_impl {
-    class T; // { dg-message "T" "" }
+    class T; // { dg-message "T" }
   }
   using namespace foo;
 }
@@ -21,4 +21,4 @@ namespace baz {
 
 foo::T *t1;
 bar::T *t2;
-baz::T *t3; // { dg-error "(ambiguous|does not name a type)" "" }
+baz::T *t3; // { dg-error "(ambiguous|does not name a type)" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic105.C b/gcc/testsuite/g++.dg/cpp0x/variadic105.C
index 4ba384c..1ffc0fc 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic105.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic105.C
@@ -20,6 +20,6 @@ struct call_sum {
 
 int main() {
   // This shouldn't be an error; this is bug 35722.
-  reverse<call_sum>(1,2);	// { dg-bogus "no match" "" }
+  reverse<call_sum>(1,2);	// { dg-bogus "no match" }
   // { dg-bogus "sorry, unimplemented" "candidate explanation" { target *-*-* } 6 }
 }
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic65.C b/gcc/testsuite/g++.dg/cpp0x/variadic65.C
index e2ef931..0eef2a5 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic65.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic65.C
@@ -5,7 +5,7 @@ template<typename T1 = unused, typename T2 = unused, typename T3 = unused,
 struct tuple {};
 
 template<typename... Args>
-tuple<Args...> foo() { } // { dg-bogus "cannot expand" "" }
+tuple<Args...> foo() { } // { dg-bogus "cannot expand" }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/expr/call2.C b/gcc/testsuite/g++.dg/expr/call2.C
index 3b7398a..c4a2dac 100644
--- a/gcc/testsuite/g++.dg/expr/call2.C
+++ b/gcc/testsuite/g++.dg/expr/call2.C
@@ -10,5 +10,5 @@ class D;
 bool mm(D); 
  
 void g(C& f) { 
-  mm(f); // { dg-error "parameter" "" }
+  mm(f); // { dg-error "parameter" }
 }
diff --git a/gcc/testsuite/g++.dg/expr/member-of-incomplete-type-1.C b/gcc/testsuite/g++.dg/expr/member-of-incomplete-type-1.C
index 9fe65bc..2f6a04c 100644
--- a/gcc/testsuite/g++.dg/expr/member-of-incomplete-type-1.C
+++ b/gcc/testsuite/g++.dg/expr/member-of-incomplete-type-1.C
@@ -7,6 +7,6 @@ struct A;
 
 int main()
 {
-    A::g();           // { dg-error "incomplete" "" }
+    A::g();           // { dg-error "incomplete" }
 }
 
diff --git a/gcc/testsuite/g++.dg/expr/pmf-1.C b/gcc/testsuite/g++.dg/expr/pmf-1.C
index 90f3431..e6b7219 100644
--- a/gcc/testsuite/g++.dg/expr/pmf-1.C
+++ b/gcc/testsuite/g++.dg/expr/pmf-1.C
@@ -7,13 +7,13 @@
 struct A 
 {
   void f();
-  void foo(void (A::*)(int));       // { dg-message "void A::foo|no known conversion" "" }
+  void foo(void (A::*)(int));       // { dg-message "void A::foo|no known conversion" }
   template<typename T>
     void g(T);
   void h()
   {
     void (A::*p)() = &A::f;
-    void (A::*q)() = &(A::f);       // { dg-error "parenthesized" "" }
-    foo(&g<int>);                   // { dg-error "no matching" "" }
+    void (A::*q)() = &(A::f);       // { dg-error "parenthesized" }
+    foo(&g<int>);                   // { dg-error "no matching" }
   }
 };
diff --git a/gcc/testsuite/g++.dg/ext/altivec-types-1.C b/gcc/testsuite/g++.dg/ext/altivec-types-1.C
index f54aeec..afcd569 100644
--- a/gcc/testsuite/g++.dg/ext/altivec-types-1.C
+++ b/gcc/testsuite/g++.dg/ext/altivec-types-1.C
@@ -27,62 +27,62 @@ __vector float vf;
 
 /* These should be rejected as invalid AltiVec types.  */
 
-__vector bool vb;			/* { dg-error "AltiVec types" "" } */
-__vector long long vll;			/* { dg-error "AltiVec types" "" } */
-__vector unsigned long long vull;	/* { dg-error "AltiVec types" "" } */
-__vector signed long long vsll;		/* { dg-error "AltiVec types" "" } */
-__vector __bool long long vbll;		/* { dg-error "AltiVec types" "" } */
-__vector long long int vlli;		/* { dg-error "AltiVec types" "" } */
-__vector unsigned long long int vulli;	/* { dg-error "AltiVec types" "" } */
-__vector signed long long int vslli;	/* { dg-error "AltiVec types" "" } */
-__vector __bool long long int vblli;	/* { dg-error "AltiVec types" "" } */
-__vector double vd1;			/* { dg-error "AltiVec types" "" } */
-__vector long double vld;		/* { dg-error "AltiVec types" "" } */
-__vector _Complex float vcf;		/* { dg-error "AltiVec types" "" } */
-__vector _Complex double vcd;		/* { dg-error "AltiVec types" "" } */
-__vector _Complex long double vcld;	/* { dg-error "AltiVec types" "" } */
-__vector _Complex signed char vcsc;	/* { dg-error "AltiVec types" "" } */
-__vector _Complex unsigned char vcuc;	/* { dg-error "AltiVec types" "" } */
-__vector _Complex short vcss;		/* { dg-error "AltiVec types" "" } */
-__vector _Complex unsigned short vcus;	/* { dg-error "AltiVec types" "" } */
-__vector _Complex int vcsi;		/* { dg-error "AltiVec types" "" } */
-__vector _Complex unsigned int vcui;	/* { dg-error "AltiVec types" "" } */
-__vector _Complex long vcsl;		/* { dg-error "AltiVec types" "" } */
-__vector _Complex unsigned long vcul;	/* { dg-error "AltiVec types" "" } */
-__vector _Complex long long vcsll;	/* { dg-error "AltiVec types" "" } */
-__vector _Complex unsigned long long vcull; /* { dg-error "AltiVec types" "" } */
-__vector __complex float v_cf;		/* { dg-error "AltiVec types" "" } */
-__vector __complex double v_cd;		/* { dg-error "AltiVec types" "" } */
-__vector __complex long double v_cld;	/* { dg-error "AltiVec types" "" } */
-__vector __complex signed char v_csc;	/* { dg-error "AltiVec types" "" } */
-__vector __complex unsigned char v_cuc;	/* { dg-error "AltiVec types" "" } */
-__vector __complex short v_css;		/* { dg-error "AltiVec types" "" } */
-__vector __complex unsigned short v_cus; /* { dg-error "AltiVec types" "" } */
-__vector __complex int v_csi;		/* { dg-error "AltiVec types" "" } */
-__vector __complex unsigned int v_cui;	/* { dg-error "AltiVec types" "" } */
-__vector __complex long v_csl;		/* { dg-error "AltiVec types" "" } */
-__vector __complex unsigned long v_cul;	/* { dg-error "AltiVec types" "" } */
-__vector __complex long long v_csll;	/* { dg-error "AltiVec types" "" } */
-__vector __complex unsigned long long v_cull; /* { dg-error "AltiVec types" "" } */
+__vector bool vb;			/* { dg-error "AltiVec types" } */
+__vector long long vll;			/* { dg-error "AltiVec types" } */
+__vector unsigned long long vull;	/* { dg-error "AltiVec types" } */
+__vector signed long long vsll;		/* { dg-error "AltiVec types" } */
+__vector __bool long long vbll;		/* { dg-error "AltiVec types" } */
+__vector long long int vlli;		/* { dg-error "AltiVec types" } */
+__vector unsigned long long int vulli;	/* { dg-error "AltiVec types" } */
+__vector signed long long int vslli;	/* { dg-error "AltiVec types" } */
+__vector __bool long long int vblli;	/* { dg-error "AltiVec types" } */
+__vector double vd1;			/* { dg-error "AltiVec types" } */
+__vector long double vld;		/* { dg-error "AltiVec types" } */
+__vector _Complex float vcf;		/* { dg-error "AltiVec types" } */
+__vector _Complex double vcd;		/* { dg-error "AltiVec types" } */
+__vector _Complex long double vcld;	/* { dg-error "AltiVec types" } */
+__vector _Complex signed char vcsc;	/* { dg-error "AltiVec types" } */
+__vector _Complex unsigned char vcuc;	/* { dg-error "AltiVec types" } */
+__vector _Complex short vcss;		/* { dg-error "AltiVec types" } */
+__vector _Complex unsigned short vcus;	/* { dg-error "AltiVec types" } */
+__vector _Complex int vcsi;		/* { dg-error "AltiVec types" } */
+__vector _Complex unsigned int vcui;	/* { dg-error "AltiVec types" } */
+__vector _Complex long vcsl;		/* { dg-error "AltiVec types" } */
+__vector _Complex unsigned long vcul;	/* { dg-error "AltiVec types" } */
+__vector _Complex long long vcsll;	/* { dg-error "AltiVec types" } */
+__vector _Complex unsigned long long vcull; /* { dg-error "AltiVec types" } */
+__vector __complex float v_cf;		/* { dg-error "AltiVec types" } */
+__vector __complex double v_cd;		/* { dg-error "AltiVec types" } */
+__vector __complex long double v_cld;	/* { dg-error "AltiVec types" } */
+__vector __complex signed char v_csc;	/* { dg-error "AltiVec types" } */
+__vector __complex unsigned char v_cuc;	/* { dg-error "AltiVec types" } */
+__vector __complex short v_css;		/* { dg-error "AltiVec types" } */
+__vector __complex unsigned short v_cus; /* { dg-error "AltiVec types" } */
+__vector __complex int v_csi;		/* { dg-error "AltiVec types" } */
+__vector __complex unsigned int v_cui;	/* { dg-error "AltiVec types" } */
+__vector __complex long v_csl;		/* { dg-error "AltiVec types" } */
+__vector __complex unsigned long v_cul;	/* { dg-error "AltiVec types" } */
+__vector __complex long long v_csll;	/* { dg-error "AltiVec types" } */
+__vector __complex unsigned long long v_cull; /* { dg-error "AltiVec types" } */
 
 /* These should be rejected because the component types are invalid.  We
    don't care about the actual error messages here.  */
 
-__vector __bool unsigned char vbuc;	/* { dg-error "" "" } */
-__vector __bool signed char vbsc;	/* { dg-error "" "" } */
-__vector __bool unsigned short vbuh;	/* { dg-error "" "" } */
-__vector __bool signed short vbsh;	/* { dg-error "" "" } */
-__vector __bool unsigned int vbui;	/* { dg-error "" "" } */
-__vector __bool signed int vbsi;	/* { dg-error "" "" } */
-__vector __bool unsigned vbuj;		/* { dg-error "" "" } */
-__vector __bool signed vbsj;		/* { dg-error "" "" } */
-__vector signed float vsf;		/* { dg-error "" "" } */
-__vector unsigned float vuf;		/* { dg-error "" "" } */
-__vector short float vsf;		/* { dg-error "" "" } */
-__vector signed double vsd;		/* { dg-error "" "" } */
-__vector unsigned double vud;		/* { dg-error "" "" } */
-__vector short double vsd;		/* { dg-error "" "" } */
-__vector __bool float vbf;		/* { dg-error "" "" } */
-__vector __bool double vbd;		/* { dg-error "" "" } */
-__vector __bool short float blf;	/* { dg-error "" "" } */
-__vector __bool short double vlbd;	/* { dg-error "" "" } */
+__vector __bool unsigned char vbuc;	/* { dg-error "" } */
+__vector __bool signed char vbsc;	/* { dg-error "" } */
+__vector __bool unsigned short vbuh;	/* { dg-error "" } */
+__vector __bool signed short vbsh;	/* { dg-error "" } */
+__vector __bool unsigned int vbui;	/* { dg-error "" } */
+__vector __bool signed int vbsi;	/* { dg-error "" } */
+__vector __bool unsigned vbuj;		/* { dg-error "" } */
+__vector __bool signed vbsj;		/* { dg-error "" } */
+__vector signed float vsf;		/* { dg-error "" } */
+__vector unsigned float vuf;		/* { dg-error "" } */
+__vector short float vsf;		/* { dg-error "" } */
+__vector signed double vsd;		/* { dg-error "" } */
+__vector unsigned double vud;		/* { dg-error "" } */
+__vector short double vsd;		/* { dg-error "" } */
+__vector __bool float vbf;		/* { dg-error "" } */
+__vector __bool double vbd;		/* { dg-error "" } */
+__vector __bool short float blf;	/* { dg-error "" } */
+__vector __bool short double vlbd;	/* { dg-error "" } */
diff --git a/gcc/testsuite/g++.dg/ext/altivec-types-2.C b/gcc/testsuite/g++.dg/ext/altivec-types-2.C
index cee6c8f..4df12da 100644
--- a/gcc/testsuite/g++.dg/ext/altivec-types-2.C
+++ b/gcc/testsuite/g++.dg/ext/altivec-types-2.C
@@ -5,10 +5,10 @@
 
 /* These should get warnings for 32-bit code.  */
 
-__vector long vl;			/* { dg-warning "deprecated" "" } */
-__vector unsigned long vul;		/* { dg-warning "deprecated" "" } */
-__vector signed long vsl;		/* { dg-warning "deprecated" "" } */
-__vector __bool long int vbli;		/* { dg-warning "deprecated" "" } */
-__vector long int vli;			/* { dg-warning "deprecated" "" } */
-__vector unsigned long int vuli;	/* { dg-warning "deprecated" "" } */
-__vector signed long int vsli;		/* { dg-warning "deprecated" "" } */
+__vector long vl;			/* { dg-warning "deprecated" } */
+__vector unsigned long vul;		/* { dg-warning "deprecated" } */
+__vector signed long vsl;		/* { dg-warning "deprecated" } */
+__vector __bool long int vbli;		/* { dg-warning "deprecated" } */
+__vector long int vli;			/* { dg-warning "deprecated" } */
+__vector unsigned long int vuli;	/* { dg-warning "deprecated" } */
+__vector signed long int vsli;		/* { dg-warning "deprecated" } */
diff --git a/gcc/testsuite/g++.dg/ext/altivec-types-3.C b/gcc/testsuite/g++.dg/ext/altivec-types-3.C
index 6bea9a1..755de73 100644
--- a/gcc/testsuite/g++.dg/ext/altivec-types-3.C
+++ b/gcc/testsuite/g++.dg/ext/altivec-types-3.C
@@ -5,10 +5,10 @@
 
 /* These should be rejected for 64-bit code.  */
 
-__vector long vl;			/* { dg-error "invalid for 64" "" } */
-__vector unsigned long vul;		/* { dg-error "invalid for 64" "" } */
-__vector signed long vsl;		/* { dg-error "invalid for 64" "" } */
-__vector __bool long int vbli;		/* { dg-error "invalid for 64" "" } */
-__vector long int vli;			/* { dg-error "invalid for 64" "" } */
-__vector unsigned long int vuli;	/* { dg-error "invalid for 64" "" } */
-__vector signed long int vsli;		/* { dg-error "invalid for 64" "" } */
+__vector long vl;			/* { dg-error "invalid for 64" } */
+__vector unsigned long vul;		/* { dg-error "invalid for 64" } */
+__vector signed long vsl;		/* { dg-error "invalid for 64" } */
+__vector __bool long int vbli;		/* { dg-error "invalid for 64" } */
+__vector long int vli;			/* { dg-error "invalid for 64" } */
+__vector unsigned long int vuli;	/* { dg-error "invalid for 64" } */
+__vector signed long int vsli;		/* { dg-error "invalid for 64" } */
diff --git a/gcc/testsuite/g++.dg/ext/attrib14.C b/gcc/testsuite/g++.dg/ext/attrib14.C
index ebe0456..9db1f39 100644
--- a/gcc/testsuite/g++.dg/ext/attrib14.C
+++ b/gcc/testsuite/g++.dg/ext/attrib14.C
@@ -2,7 +2,7 @@
 // The bogus attribute is ignored, but was in TYPE_ATTRIBUTES during
 // parsing of the class, causing some variants to have it and some not.
 
-struct __attribute__((bogus)) A	// { dg-warning "ignored" "" }
+struct __attribute__((bogus)) A	// { dg-warning "ignored" }
 {
     virtual ~A();
     void foo(const A&);
diff --git a/gcc/testsuite/g++.dg/ext/complit1.C b/gcc/testsuite/g++.dg/ext/complit1.C
index ab2b038..1e4d08f 100644
--- a/gcc/testsuite/g++.dg/ext/complit1.C
+++ b/gcc/testsuite/g++.dg/ext/complit1.C
@@ -11,6 +11,6 @@ public:
 };
 
 Foo::Foo(int v0, int v1)
-  : val_((int[]) {v0, v1})  // { dg-error "" "" }
+  : val_((int[]) {v0, v1})  // { dg-error "" }
 {
 }
diff --git a/gcc/testsuite/g++.dg/ext/forscope2.C b/gcc/testsuite/g++.dg/ext/forscope2.C
index 4c63bab..460b2400 100644
--- a/gcc/testsuite/g++.dg/ext/forscope2.C
+++ b/gcc/testsuite/g++.dg/ext/forscope2.C
@@ -16,12 +16,12 @@ struct A
 
 void Go( )
 {
-  for (int i = 1;;)	// { dg-warning "using obsolete binding" "" }
+  for (int i = 1;;)	// { dg-warning "using obsolete binding" }
     {
       switch (1) {
       default: {}
       }
       A d;
     }
-  i;  // { dg-warning "name lookup" "" }
+  i;  // { dg-warning "name lookup" }
 }
diff --git a/gcc/testsuite/g++.dg/ext/gnu-inline-global-reject.C b/gcc/testsuite/g++.dg/ext/gnu-inline-global-reject.C
index 7e84fa7..d7f8074 100644
--- a/gcc/testsuite/g++.dg/ext/gnu-inline-global-reject.C
+++ b/gcc/testsuite/g++.dg/ext/gnu-inline-global-reject.C
@@ -10,47 +10,47 @@
 
 #undef fn
 #define fn pfx(func_decl_inline_before)
-decl(inline, fn) // { dg-message "previous" "" }
-gnuindef(fn, 0) // { dg-error "redeclared" "" }
+decl(inline, fn) // { dg-message "previous" }
+gnuindef(fn, 0) // { dg-error "redeclared" }
 
 #undef fn
 #define fn pfx(func_decl_inline_after)
-gnuindef(fn, 0) // { dg-message "previous" "" }
-decl(inline, fn) // { dg-error "redeclared" "" }
+gnuindef(fn, 0) // { dg-message "previous" }
+decl(inline, fn) // { dg-error "redeclared" }
 
 #undef fn
 #define fn pfx(func_def_gnuin_redef)
-gnuindef(fn, 0) // { dg-message "previous" "" }
-gnuindef(fn, 1) // { dg-error "redefinition" "" }
+gnuindef(fn, 0) // { dg-message "previous" }
+gnuindef(fn, 1) // { dg-error "redefinition" }
 
 #undef fn
 #define fn pfx(func_def_inline_redef)
-def(inline, fn, 0) // { dg-message "previous" "" }
-def(inline, fn, 1) // { dg-error "redefinition" "" }
+def(inline, fn, 0) // { dg-message "previous" }
+def(inline, fn, 1) // { dg-error "redefinition" }
 
 #undef fn
 #define fn pfx(func_def_inline_after)
-gnuindef(fn, 0) // { dg-message "previous" "" }
-def(inline, fn, 1) // { dg-error "redeclare" "" }
+gnuindef(fn, 0) // { dg-message "previous" }
+def(inline, fn, 1) // { dg-error "redeclare" }
 
 #undef fn
 #define fn pfx(func_def_inline_before)
-def(inline, fn, 0) // { dg-message "previous" "" }
-gnuindef(fn, 1) // { dg-error "redefinition" "" }
+def(inline, fn, 0) // { dg-message "previous" }
+gnuindef(fn, 1) // { dg-error "redefinition" }
 
 #undef fn
 #define fn pfx(func_def_before)
-def(, fn, 0) // { dg-message "previous" "" }
-gnuindef(fn, 1) // { dg-error "redefinition" "" }
+def(, fn, 0) // { dg-message "previous" }
+gnuindef(fn, 1) // { dg-error "redefinition" }
 
 #undef fn
 #define fn pfx(func_decl_static_inline_before)
-decl(static inline, fn) // { dg-message "previous" "" }
-gnuindef(fn, 0) // { dg-error "redeclared" "" }
+decl(static inline, fn) // { dg-message "previous" }
+gnuindef(fn, 0) // { dg-error "redeclared" }
 
 #undef fn
 #define fn pfx(func_def_static_inline_after)
 decl(static, fn)
-gnuindef(fn, 0) // { dg-message "previous" "" }
+gnuindef(fn, 0) // { dg-message "previous" }
 decl(static, fn)
-def(static inline, fn, 1) // { dg-error "redeclare" "" }
+def(static inline, fn, 1) // { dg-error "redeclare" }
diff --git a/gcc/testsuite/g++.dg/ext/label13.C b/gcc/testsuite/g++.dg/ext/label13.C
index 0887d46..70f251d 100644
--- a/gcc/testsuite/g++.dg/ext/label13.C
+++ b/gcc/testsuite/g++.dg/ext/label13.C
@@ -8,7 +8,7 @@ struct C
   C();
 };
 
-C::C()	// { dg-bogus "can never be copied" "" }
+C::C()	// { dg-bogus "can never be copied" }
 {
   static void *labelref = &&label;
   goto *labelref;
diff --git a/gcc/testsuite/g++.dg/ext/member-attr.C b/gcc/testsuite/g++.dg/ext/member-attr.C
index 2a7e18b..20091c8 100644
--- a/gcc/testsuite/g++.dg/ext/member-attr.C
+++ b/gcc/testsuite/g++.dg/ext/member-attr.C
@@ -9,6 +9,6 @@
 
 class T {
   public:
-    __attribute__ ((garbage1)) void member1(int) {} /* { dg-warning "'garbage1' attribute directive ignored" "" } */
-    void __attribute__ ((garbage2)) member2(int) {} /* { dg-warning "'garbage2' attribute directive ignored" "" } */
+    __attribute__ ((garbage1)) void member1(int) {} /* { dg-warning "'garbage1' attribute directive ignored" } */
+    void __attribute__ ((garbage2)) member2(int) {} /* { dg-warning "'garbage2' attribute directive ignored" } */
 };
diff --git a/gcc/testsuite/g++.dg/ext/visibility/anon7.C b/gcc/testsuite/g++.dg/ext/visibility/anon7.C
index 1aa239e..b1b70e1 100644
--- a/gcc/testsuite/g++.dg/ext/visibility/anon7.C
+++ b/gcc/testsuite/g++.dg/ext/visibility/anon7.C
@@ -4,7 +4,7 @@
 namespace
 {
   struct A {
-    static int bar ();		// { dg-error "used but never defined" "" }
+    static int bar ();		// { dg-error "used but never defined" }
     static int i;		// { dg-error "used, but not defined" "" { xfail *-*-* } }
     static int j;
     static int k;
diff --git a/gcc/testsuite/g++.dg/ext/visibility/visibility-7.C b/gcc/testsuite/g++.dg/ext/visibility/visibility-7.C
index 0a6e4ba..98314b9 100644
--- a/gcc/testsuite/g++.dg/ext/visibility/visibility-7.C
+++ b/gcc/testsuite/g++.dg/ext/visibility/visibility-7.C
@@ -4,8 +4,8 @@
 
 extern int 
 __attribute__((visibility ("hidden")))
-xyzzy; /* { dg-message "previous declaration" "" } */
+xyzzy; /* { dg-message "previous declaration" } */
 
 int 
 __attribute__((visibility ("protected")))
-xyzzy = 5; /* { dg-warning "visibility attribute ignored" "" } */
+xyzzy = 5; /* { dg-warning "visibility attribute ignored" } */
diff --git a/gcc/testsuite/g++.dg/ext/vla2.C b/gcc/testsuite/g++.dg/ext/vla2.C
index 7e67fb0..fbabeae 100644
--- a/gcc/testsuite/g++.dg/ext/vla2.C
+++ b/gcc/testsuite/g++.dg/ext/vla2.C
@@ -14,6 +14,6 @@ void bar(int i)
 {
   char d[i] ;
   
-  begin(d);  // { dg-error "no matching function" "" }
+  begin(d);  // { dg-error "no matching function" }
   // { dg-message "(candidate|valid template argument)" "candidate note" { target *-*-* } .-1 }
 }
diff --git a/gcc/testsuite/g++.dg/inherit/access2.C b/gcc/testsuite/g++.dg/inherit/access2.C
index 2477994..dc5f7d7 100644
--- a/gcc/testsuite/g++.dg/inherit/access2.C
+++ b/gcc/testsuite/g++.dg/inherit/access2.C
@@ -10,5 +10,5 @@ B b;
 
 void A::f ()
 {
-  A* ap = &b;			// { dg-error "base|inherit" "" }
+  A* ap = &b;			// { dg-error "base|inherit" }
 }
diff --git a/gcc/testsuite/g++.dg/inherit/covariant12.C b/gcc/testsuite/g++.dg/inherit/covariant12.C
index 434082a..e7247f2 100644
--- a/gcc/testsuite/g++.dg/inherit/covariant12.C
+++ b/gcc/testsuite/g++.dg/inherit/covariant12.C
@@ -9,10 +9,10 @@ struct S;
 
 struct B
 {
-  virtual T *Foo (); // { dg-error "overriding" "" }
+  virtual T *Foo (); // { dg-error "overriding" }
 };
 
 struct D : B
 {
-  virtual S *Foo (); // { dg-error "invalid covariant" "" }
+  virtual S *Foo (); // { dg-error "invalid covariant" }
 };
diff --git a/gcc/testsuite/g++.dg/inherit/covariant14.C b/gcc/testsuite/g++.dg/inherit/covariant14.C
index 13ca877..5118243 100644
--- a/gcc/testsuite/g++.dg/inherit/covariant14.C
+++ b/gcc/testsuite/g++.dg/inherit/covariant14.C
@@ -8,13 +8,13 @@ struct A;
 
 struct B
 {
-  virtual A* foo();  // { dg-error "overriding" "" }
+  virtual A* foo();  // { dg-error "overriding" }
 };
 
 namespace N
 {
   struct A : B
   {
-    virtual A* foo(); // { dg-error "invalid covariant" "" }	
+    virtual A* foo(); // { dg-error "invalid covariant" }	
   };
 }
diff --git a/gcc/testsuite/g++.dg/inherit/namespace-as-base.C b/gcc/testsuite/g++.dg/inherit/namespace-as-base.C
index 041c18a..aafcd0d 100644
--- a/gcc/testsuite/g++.dg/inherit/namespace-as-base.C
+++ b/gcc/testsuite/g++.dg/inherit/namespace-as-base.C
@@ -5,5 +5,5 @@ namespace Out {
   }
 }
 
-class Klasse : public Out::In {  // { dg-error ".*" "" }
+class Klasse : public Out::In {  // { dg-error ".*" }
 };
diff --git a/gcc/testsuite/g++.dg/inherit/template-as-base.C b/gcc/testsuite/g++.dg/inherit/template-as-base.C
index 5d34b15..a7e531e 100644
--- a/gcc/testsuite/g++.dg/inherit/template-as-base.C
+++ b/gcc/testsuite/g++.dg/inherit/template-as-base.C
@@ -6,4 +6,4 @@ namespace N
     template<typename> struct X { };
 }
 
-struct A : N::X { }; // { dg-error "expected class-name" "" }
+struct A : N::X { }; // { dg-error "expected class-name" }
diff --git a/gcc/testsuite/g++.dg/lookup/ambig1.C b/gcc/testsuite/g++.dg/lookup/ambig1.C
index c027428..09936cc 100644
--- a/gcc/testsuite/g++.dg/lookup/ambig1.C
+++ b/gcc/testsuite/g++.dg/lookup/ambig1.C
@@ -7,11 +7,11 @@
 // Bug 16889:Undetected ambiguity.
 
 struct B { 
-  int f(); // { dg-message "int B::f" "" }
+  int f(); // { dg-message "int B::f" }
 }; 
  
 struct B1 : virtual B {}; 
 struct B2 : B {}; 
 struct BB : B1, B2 {}; 
  
-int i = BB().f();  // { dg-error "ambiguous" "" }
+int i = BB().f();  // { dg-error "ambiguous" }
diff --git a/gcc/testsuite/g++.dg/lookup/ambig2.C b/gcc/testsuite/g++.dg/lookup/ambig2.C
index 505eda6..e9a65d1 100644
--- a/gcc/testsuite/g++.dg/lookup/ambig2.C
+++ b/gcc/testsuite/g++.dg/lookup/ambig2.C
@@ -7,11 +7,11 @@
 // Bug 16889:Undetected ambiguity.
 
 struct B { 
-  int i; // { dg-message "int B::i" "" }
+  int i; // { dg-message "int B::i" }
 }; 
  
 struct B1 : virtual B {}; 
 struct B2 : B {}; 
 struct BB : B1, B2 {}; 
  
-int i = BB().i;  // { dg-error "ambiguous" "" }
+int i = BB().i;  // { dg-error "ambiguous" }
diff --git a/gcc/testsuite/g++.dg/lookup/ambig3.C b/gcc/testsuite/g++.dg/lookup/ambig3.C
index 5a3f5b9..dee3cf7 100644
--- a/gcc/testsuite/g++.dg/lookup/ambig3.C
+++ b/gcc/testsuite/g++.dg/lookup/ambig3.C
@@ -7,7 +7,7 @@
 // Follow on from Bug 16889:Undetected ambiguity.
 
 struct B { 
-  int f(); // { dg-message "int B::f" "" }
+  int f(); // { dg-message "int B::f" }
 }; 
  
 struct B1 : virtual B {}; 
@@ -15,4 +15,4 @@ struct B2 : B {};
 struct B2_2 : B2 {};
 struct BB : B1, B2_2 {}; 
  
-int i = BB().f();  // { dg-error "ambiguous" "" }
+int i = BB().f();  // { dg-error "ambiguous" }
diff --git a/gcc/testsuite/g++.dg/lookup/class-member-1.C b/gcc/testsuite/g++.dg/lookup/class-member-1.C
index 37d40b4..8fbc8e5 100644
--- a/gcc/testsuite/g++.dg/lookup/class-member-1.C
+++ b/gcc/testsuite/g++.dg/lookup/class-member-1.C
@@ -7,5 +7,5 @@ struct A { };
 int main()
 {
   A a;
-  a.i = 9;           // { dg-error "no member" "" }
+  a.i = 9;           // { dg-error "no member" }
 }
diff --git a/gcc/testsuite/g++.dg/lookup/conv-1.C b/gcc/testsuite/g++.dg/lookup/conv-1.C
index b861c60..aa377b4 100644
--- a/gcc/testsuite/g++.dg/lookup/conv-1.C
+++ b/gcc/testsuite/g++.dg/lookup/conv-1.C
@@ -7,12 +7,12 @@
 
 struct A1 
 {
-  operator int () const; // { dg-message "A1::operator" "" }
+  operator int () const; // { dg-message "A1::operator" }
 };
 
 struct A2
 {
-  operator int () const; // { dg-message "A2::operator" "" }
+  operator int () const; // { dg-message "A2::operator" }
 };
 
 struct B : A1, A2 
@@ -21,6 +21,6 @@ struct B : A1, A2
 
 int Foo (B const &b)
 {
-  return b; // { dg-error "ambiguous" "" }
+  return b; // { dg-error "ambiguous" }
 }
 
diff --git a/gcc/testsuite/g++.dg/lookup/decl1.C b/gcc/testsuite/g++.dg/lookup/decl1.C
index d9af656..42a9978 100644
--- a/gcc/testsuite/g++.dg/lookup/decl1.C
+++ b/gcc/testsuite/g++.dg/lookup/decl1.C
@@ -21,12 +21,12 @@ C2<X>::operator C1<Y>()
 
 struct A
 {
-  operator int ();			// { dg-error "operator" "" }
-  operator float ();			// { dg-error "operator" "" }
-  operator float () const;		// { dg-error "operator" "" }
-  template <typename T> operator T * (); // { dg-error "candidates" "" }
+  operator int ();			// { dg-error "operator" }
+  operator float ();			// { dg-error "operator" }
+  operator float () const;		// { dg-error "operator" }
+  template <typename T> operator T * (); // { dg-error "candidates" }
 };
 
-A::operator short () { // { dg-error "prototype for" "" }
+A::operator short () { // { dg-error "prototype for" }
   return 0;
 }
diff --git a/gcc/testsuite/g++.dg/lookup/koenig1.C b/gcc/testsuite/g++.dg/lookup/koenig1.C
index 081211b..373bd3b 100644
--- a/gcc/testsuite/g++.dg/lookup/koenig1.C
+++ b/gcc/testsuite/g++.dg/lookup/koenig1.C
@@ -8,6 +8,6 @@
 class X;
 
 void foo() {
-  X x(1); // { dg-error "incomplete type" "" }
-  bar(x); // { dg-error "3:'bar' was not declared" "" }
+  X x(1); // { dg-error "incomplete type" }
+  bar(x); // { dg-error "3:'bar' was not declared" }
 }
diff --git a/gcc/testsuite/g++.dg/lookup/scoped1.C b/gcc/testsuite/g++.dg/lookup/scoped1.C
index a0773cf..663f718 100644
--- a/gcc/testsuite/g++.dg/lookup/scoped1.C
+++ b/gcc/testsuite/g++.dg/lookup/scoped1.C
@@ -4,7 +4,7 @@
 struct A
 {
   static int i1;
-  int i2; // { dg-message "declared" "" }
+  int i2; // { dg-message "declared" }
   static void f1 ();
   void f2 ();
 };
@@ -15,7 +15,7 @@ struct C: public B
   void g ()
   {
     ::A::i1 = 1;
-    ::A::i2 = 1;		// { dg-error "(access)|(context)" "" }
+    ::A::i2 = 1;		// { dg-error "(access)|(context)" }
     ::A::f1 ();
     ::A::f2 ();			// { dg-error "" }
   }
diff --git a/gcc/testsuite/g++.dg/lookup/scoped2.C b/gcc/testsuite/g++.dg/lookup/scoped2.C
index 99cedce..22c1598 100644
--- a/gcc/testsuite/g++.dg/lookup/scoped2.C
+++ b/gcc/testsuite/g++.dg/lookup/scoped2.C
@@ -13,7 +13,7 @@ struct Derived : Base
 {
   void Foo ()
   {
-    Base::Baz ();  // { dg-error "is not a member" "" }
+    Base::Baz ();  // { dg-error "is not a member" }
       
   }
 };
diff --git a/gcc/testsuite/g++.dg/lookup/two-stage4.C b/gcc/testsuite/g++.dg/lookup/two-stage4.C
index a89e618..c13c80c 100644
--- a/gcc/testsuite/g++.dg/lookup/two-stage4.C
+++ b/gcc/testsuite/g++.dg/lookup/two-stage4.C
@@ -8,7 +8,7 @@ template<typename T> bool operator==(wrap<T>, wrap<T>);
 template<typename T>
 void g(T, wrap<wrap<int> > x)
 {
-  bool b = x == x; // { dg-bogus "" "" }
+  bool b = x == x; // { dg-bogus "" }
 }
 
 template<typename T> void operator==(wrap<wrap<T> >, wrap<wrap<T> >);
diff --git a/gcc/testsuite/g++.dg/lookup/used-before-declaration.C b/gcc/testsuite/g++.dg/lookup/used-before-declaration.C
index f5dd6ef..6feb979 100644
--- a/gcc/testsuite/g++.dg/lookup/used-before-declaration.C
+++ b/gcc/testsuite/g++.dg/lookup/used-before-declaration.C
@@ -1,5 +1,5 @@
 // Copyroght (C) 2003 Free Software Foundation
 // Origin: PR/12832, Jonathan Wakely <redi@gcc.gnu.org>
 
-void f() { g(); }               // { dg-error "12:'g' was not declared" "" }
+void f() { g(); }               // { dg-error "12:'g' was not declared" }
 void g() { }
diff --git a/gcc/testsuite/g++.dg/lookup/using.C b/gcc/testsuite/g++.dg/lookup/using.C
index 30e22c0..d2df411 100644
--- a/gcc/testsuite/g++.dg/lookup/using.C
+++ b/gcc/testsuite/g++.dg/lookup/using.C
@@ -17,7 +17,7 @@ struct Derived : Base {
 int main()
 {
   Derived d;
-  X x = d.f();                  // { dg-bogus "Y" "" }
+  X x = d.f();                  // { dg-bogus "Y" }
 }
 
 
diff --git a/gcc/testsuite/g++.dg/lookup/using17.C b/gcc/testsuite/g++.dg/lookup/using17.C
index 9019dab..9b008fe 100644
--- a/gcc/testsuite/g++.dg/lookup/using17.C
+++ b/gcc/testsuite/g++.dg/lookup/using17.C
@@ -11,4 +11,4 @@ struct S {}; // { dg-message "candidates are: struct S" "candidate 1" }
 
 using namespace M;
 
-struct S s; // { dg-error "reference to 'S' is ambiguous|invalid type in declaration" "" }
+struct S s; // { dg-error "reference to 'S' is ambiguous|invalid type in declaration" }
diff --git a/gcc/testsuite/g++.dg/lookup/using2.C b/gcc/testsuite/g++.dg/lookup/using2.C
index cd878b9..c2a8ddf 100644
--- a/gcc/testsuite/g++.dg/lookup/using2.C
+++ b/gcc/testsuite/g++.dg/lookup/using2.C
@@ -24,9 +24,9 @@ namespace N
   template<int> void f() {}
 }
 
-using N;             // { dg-error "(using-declaration)|(nested-name)" "" }
-using ::N;           // { dg-error "using-declaration" "" }
-using N::f< 0 >;     // { dg-error "using-declaration" "" }
+using N;             // { dg-error "(using-declaration)|(nested-name)" }
+using ::N;           // { dg-error "using-declaration" }
+using N::f< 0 >;     // { dg-error "using-declaration" }
 
 struct  A {
   template <class T> void f(T);
@@ -39,7 +39,7 @@ struct B : A {
 };
 
 struct C : A {
-  using A::f<double>; // { dg-error "using-declaration" "" }
-  using A::X<int>;    // { dg-error "using-declaration" "" }
+  using A::f<double>; // { dg-error "using-declaration" }
+  using A::X<int>;    // { dg-error "using-declaration" }
 };
 
diff --git a/gcc/testsuite/g++.dg/other/abstract2.C b/gcc/testsuite/g++.dg/other/abstract2.C
index b794932..60a4e41 100644
--- a/gcc/testsuite/g++.dg/other/abstract2.C
+++ b/gcc/testsuite/g++.dg/other/abstract2.C
@@ -42,7 +42,7 @@ namespace N2 {
 }
 
 namespace N3 {
-  struct X { // { dg-message "note" "" }
+  struct X { // { dg-message "note" }
     virtual void xfunc(void) = 0;  // { dg-message "note" }
   };
   void g(X parm13);          // { dg-error "abstract" }
diff --git a/gcc/testsuite/g++.dg/other/classkey1.C b/gcc/testsuite/g++.dg/other/classkey1.C
index 80ab675..33792e7 100644
--- a/gcc/testsuite/g++.dg/other/classkey1.C
+++ b/gcc/testsuite/g++.dg/other/classkey1.C
@@ -6,12 +6,12 @@
 // PR 775. Some mismatches which were broken.
 
 template <class T> struct A {};
-union A<int> a; // { dg-error "'union' tag" "" }
+union A<int> a; // { dg-error "'union' tag" }
 
-template <> union A<float> {}; // { dg-error "'union' tag" "" }
+template <> union A<float> {}; // { dg-error "'union' tag" }
 
 struct B {};
-union B b;	// { dg-error "'union' tag" "" }
+union B b;	// { dg-error "'union' tag" }
 
 union C {};
-class C c;	// { dg-error "'class' tag" "" }
+class C c;	// { dg-error "'class' tag" }
diff --git a/gcc/testsuite/g++.dg/other/component1.C b/gcc/testsuite/g++.dg/other/component1.C
index 601e019..09eef3b 100644
--- a/gcc/testsuite/g++.dg/other/component1.C
+++ b/gcc/testsuite/g++.dg/other/component1.C
@@ -19,11 +19,11 @@ void Foo () {
   
   (c.f<int>) (2);
 
-  c.g;			// { dg-error "statement cannot resolve" "" }
-  c.f;		        // { dg-error "statement cannot resolve" "" }
-  c.f<int>;		// { dg-error "statement cannot resolve" "" }
+  c.g;			// { dg-error "statement cannot resolve" }
+  c.f;		        // { dg-error "statement cannot resolve" }
+  c.f<int>;		// { dg-error "statement cannot resolve" }
   
-  c.g == 1;		// { dg-error "invalid" "" }
-  c.f == 1;		// { dg-error "invalid" "" }
-  c.f<int> == 1;	// { dg-error "invalid" "" }
+  c.g == 1;		// { dg-error "invalid" }
+  c.f == 1;		// { dg-error "invalid" }
+  c.f<int> == 1;	// { dg-error "invalid" }
 }
diff --git a/gcc/testsuite/g++.dg/other/const1.C b/gcc/testsuite/g++.dg/other/const1.C
index f010138..a69744d 100644
--- a/gcc/testsuite/g++.dg/other/const1.C
+++ b/gcc/testsuite/g++.dg/other/const1.C
@@ -13,5 +13,5 @@ struct Foo
 
 void Foo::Modify(unsigned j) const
 {
-  Foo::i = j;  // { dg-error "assignment of member" "" }
+  Foo::i = j;  // { dg-error "assignment of member" }
 }
diff --git a/gcc/testsuite/g++.dg/other/const2.C b/gcc/testsuite/g++.dg/other/const2.C
index 86dde1e..d9df5c4 100644
--- a/gcc/testsuite/g++.dg/other/const2.C
+++ b/gcc/testsuite/g++.dg/other/const2.C
@@ -12,7 +12,7 @@ struct foo
 
   void bad ()
   {
-    this->*(bars[0].b) = 42; // { dg-bogus "read-only" "" }
+    this->*(bars[0].b) = 42; // { dg-bogus "read-only" }
   }
 };
 
diff --git a/gcc/testsuite/g++.dg/other/conversion1.C b/gcc/testsuite/g++.dg/other/conversion1.C
index 6573ef1..e9ddb2b 100644
--- a/gcc/testsuite/g++.dg/other/conversion1.C
+++ b/gcc/testsuite/g++.dg/other/conversion1.C
@@ -13,5 +13,5 @@ int main()
 {
   long long m;
   
-  (void (QObject::*)()) m;    // { dg-error "invalid cast" "" }
+  (void (QObject::*)()) m;    // { dg-error "invalid cast" }
 }
diff --git a/gcc/testsuite/g++.dg/other/do1.C b/gcc/testsuite/g++.dg/other/do1.C
index 7203585..b3a9daf 100644
--- a/gcc/testsuite/g++.dg/other/do1.C
+++ b/gcc/testsuite/g++.dg/other/do1.C
@@ -8,6 +8,6 @@
 void init ()
 {
   do {  } while (0)
-	    obj = 0; // { dg-error "expected|not declared" "" }
+	    obj = 0; // { dg-error "expected|not declared" }
      
 }
diff --git a/gcc/testsuite/g++.dg/other/error1.C b/gcc/testsuite/g++.dg/other/error1.C
index 927efef..5d79408 100644
--- a/gcc/testsuite/g++.dg/other/error1.C
+++ b/gcc/testsuite/g++.dg/other/error1.C
@@ -10,6 +10,6 @@ class foo {
   int fudge[40];
   int bar [40];
   inline int access(int i) {
-    return bar(i);  // { dg-error "cannot be used as a function" "" }
+    return bar(i);  // { dg-error "cannot be used as a function" }
   }
 };
diff --git a/gcc/testsuite/g++.dg/other/error10.C b/gcc/testsuite/g++.dg/other/error10.C
index 546a4d6..33fbee5 100644
--- a/gcc/testsuite/g++.dg/other/error10.C
+++ b/gcc/testsuite/g++.dg/other/error10.C
@@ -10,5 +10,5 @@ void foo(const A<N> &a)
 
 void bar()
 {
-    foo(A<0>()); // { dg-message "required from here" "" }
+    foo(A<0>()); // { dg-message "required from here" }
 }
diff --git a/gcc/testsuite/g++.dg/other/error3.C b/gcc/testsuite/g++.dg/other/error3.C
index 1e64563..dfe9734 100644
--- a/gcc/testsuite/g++.dg/other/error3.C
+++ b/gcc/testsuite/g++.dg/other/error3.C
@@ -3,4 +3,4 @@
 
 void (*g() throw())();		// { dg-message "g\\(\\) throw" "" { target { ! c++1z } } }
 				// { dg-message "g\\(\\) noexcept" "" { target c++1z } .-1 }
-void (*g())();			// { dg-error "" "" }
+void (*g())();			// { dg-error "" }
diff --git a/gcc/testsuite/g++.dg/other/error4.C b/gcc/testsuite/g++.dg/other/error4.C
index a5d5e3c7..6a8cb40 100644
--- a/gcc/testsuite/g++.dg/other/error4.C
+++ b/gcc/testsuite/g++.dg/other/error4.C
@@ -7,9 +7,9 @@
 
 struct Wrapper {};
 
-void Foo(int const &); // { dg-message "in passing" "" }
+void Foo(int const &); // { dg-message "in passing" }
 
 void Baz ()
 {
-  Foo (Wrapper ()); // { dg-error "Wrapper" "" }
+  Foo (Wrapper ()); // { dg-error "Wrapper" }
 }
diff --git a/gcc/testsuite/g++.dg/other/error5.C b/gcc/testsuite/g++.dg/other/error5.C
index 44c4a47..e6528d4 100644
--- a/gcc/testsuite/g++.dg/other/error5.C
+++ b/gcc/testsuite/g++.dg/other/error5.C
@@ -7,7 +7,7 @@ template <typename T> struct S {
 };
 
 template <typename T> struct S2 : S<T> {
-    using S<T>::operator typename S<T>::I*; // { dg-error "operator S\\<int\\>" "" }
+    using S<T>::operator typename S<T>::I*; // { dg-error "operator S\\<int\\>" }
 };
 
-template struct S2<int>;  // { dg-message "required" "" }
+template struct S2<int>;  // { dg-message "required" }
diff --git a/gcc/testsuite/g++.dg/other/error8.C b/gcc/testsuite/g++.dg/other/error8.C
index 116a684..6bd31d8 100644
--- a/gcc/testsuite/g++.dg/other/error8.C
+++ b/gcc/testsuite/g++.dg/other/error8.C
@@ -18,5 +18,5 @@ void tfoo(void)
     int alpha;  // { dg-error "" "" { xfail *-*-* } }
     int beta; 
   }; // { dg-bogus "" "misplaced position of the declaration" { xfail *-*-* } }
-  double alpha; // { dg-error "" "" }
+  double alpha; // { dg-error "" }
 }
diff --git a/gcc/testsuite/g++.dg/other/error9.C b/gcc/testsuite/g++.dg/other/error9.C
index 65a9c58..41e8cdd 100644
--- a/gcc/testsuite/g++.dg/other/error9.C
+++ b/gcc/testsuite/g++.dg/other/error9.C
@@ -14,7 +14,7 @@ struct B
 
 struct C : public B, public A
 {
-  C ()  // { dg-warning "when initialized" "" }
-    : A(), B()  // { dg-warning "base .\[AB\]." "" }
+  C ()  // { dg-warning "when initialized" }
+    : A(), B()  // { dg-warning "base .\[AB\]." }
   { }
 };
diff --git a/gcc/testsuite/g++.dg/other/field1.C b/gcc/testsuite/g++.dg/other/field1.C
index a719135..1efc396 100644
--- a/gcc/testsuite/g++.dg/other/field1.C
+++ b/gcc/testsuite/g++.dg/other/field1.C
@@ -7,19 +7,19 @@
 
 struct test
 {
-  char test;  // { dg-error "with same name as class" "" }
+  char test;  // { dg-error "with same name as class" }
   test();
 };
 
 template <typename T> struct X
 {
-  char X;  // { dg-error "with same name as class" "" }
+  char X;  // { dg-error "with same name as class" }
   X ();
 };
 
 template <> struct X<int> {
-  char X;  // { dg-error "with same name as class" "" }
+  char X;  // { dg-error "with same name as class" }
   X();
 };
 
-X<float> i; // { dg-message "required from" "" }
+X<float> i; // { dg-message "required from" }
diff --git a/gcc/testsuite/g++.dg/other/init1.C b/gcc/testsuite/g++.dg/other/init1.C
index 7fc7db6..a68d3e4 100644
--- a/gcc/testsuite/g++.dg/other/init1.C
+++ b/gcc/testsuite/g++.dg/other/init1.C
@@ -17,7 +17,7 @@ struct B : A
 class T
 {
   typedef int Foo;
-  T () : Foo () {}	// { dg-error "T::Foo' is not" "" }
+  T () : Foo () {}	// { dg-error "T::Foo' is not" }
 };
 
 struct S : B
diff --git a/gcc/testsuite/g++.dg/other/ptrmem2.C b/gcc/testsuite/g++.dg/other/ptrmem2.C
index 335f492..cb54ab3 100644
--- a/gcc/testsuite/g++.dg/other/ptrmem2.C
+++ b/gcc/testsuite/g++.dg/other/ptrmem2.C
@@ -19,7 +19,7 @@ template<class T> int f2(T x);
 
 int D::Foo ()
 {
-  f1( &D::m);   // { dg-error "cannot create pointer to ref" "" }
+  f1( &D::m);   // { dg-error "cannot create pointer to ref" }
   f1( &(D::m));	// ok
   f2( &D::s);   // ok
   f2( &(D::s)); // ok
@@ -28,7 +28,7 @@ int D::Foo ()
 
 int Foo ()
 {
-  f1( &D::m);    // { dg-error "cannot create pointer to ref" "" }
+  f1( &D::m);    // { dg-error "cannot create pointer to ref" }
   f1( &(D::m));  // { dg-error "non-static" }
   f2( &D::s);    // ok
   f2( &(D::s));  // ok
diff --git a/gcc/testsuite/g++.dg/other/return1.C b/gcc/testsuite/g++.dg/other/return1.C
index 2473b8d..58fb8a4 100644
--- a/gcc/testsuite/g++.dg/other/return1.C
+++ b/gcc/testsuite/g++.dg/other/return1.C
@@ -7,7 +7,7 @@
 struct wxString;
 struct wxString* wxGetEmptyString();
 
-struct wxString GetHeader() // { dg-error "return type" "" }
+struct wxString GetHeader() // { dg-error "return type" }
 {
   return *wxGetEmptyString();
 }
diff --git a/gcc/testsuite/g++.dg/overload/builtin3.C b/gcc/testsuite/g++.dg/overload/builtin3.C
index dcd9fd0..cd2b578 100644
--- a/gcc/testsuite/g++.dg/overload/builtin3.C
+++ b/gcc/testsuite/g++.dg/overload/builtin3.C
@@ -6,5 +6,5 @@ namespace std {
 }
 using std::fabs;
 
-double (*p) (double) = &fabs;  // { dg-bogus "is ambiguous" "" }
+double (*p) (double) = &fabs;  // { dg-bogus "is ambiguous" }
 
diff --git a/gcc/testsuite/g++.dg/overload/error1.C b/gcc/testsuite/g++.dg/overload/error1.C
index dd10d90..6c5998c 100644
--- a/gcc/testsuite/g++.dg/overload/error1.C
+++ b/gcc/testsuite/g++.dg/overload/error1.C
@@ -2,6 +2,6 @@
 
 struct S
 {
-  void f () {} // { dg-error "with" "" }
-  int f () { return 0; } // { dg-error "overloaded" "" }
+  void f () {} // { dg-error "with" }
+  int f () { return 0; } // { dg-error "overloaded" }
 };
diff --git a/gcc/testsuite/g++.dg/overload/error2.C b/gcc/testsuite/g++.dg/overload/error2.C
index 3270621..4a9d35b 100644
--- a/gcc/testsuite/g++.dg/overload/error2.C
+++ b/gcc/testsuite/g++.dg/overload/error2.C
@@ -6,6 +6,6 @@
 
 struct A
 {
-  void foo();  // { dg-error "with" "" }
-  virtual void foo();  // { dg-error "cannot be overloaded" "" }
+  void foo();  // { dg-error "with" }
+  virtual void foo();  // { dg-error "cannot be overloaded" }
 };
diff --git a/gcc/testsuite/g++.dg/overload/koenig2.C b/gcc/testsuite/g++.dg/overload/koenig2.C
index f35aa1a..6f26dd0 100644
--- a/gcc/testsuite/g++.dg/overload/koenig2.C
+++ b/gcc/testsuite/g++.dg/overload/koenig2.C
@@ -11,5 +11,5 @@ void anyfunc(int x);
 
 void Foo ()
 {
-  anyfunc (&dummy<>); // { dg-error "cannot resolve overload" "" }
+  anyfunc (&dummy<>); // { dg-error "cannot resolve overload" }
 }
diff --git a/gcc/testsuite/g++.dg/overload/pmf1.C b/gcc/testsuite/g++.dg/overload/pmf1.C
index d200749..7cbc48f 100644
--- a/gcc/testsuite/g++.dg/overload/pmf1.C
+++ b/gcc/testsuite/g++.dg/overload/pmf1.C
@@ -17,5 +17,5 @@ void f (C) {}         // even though this would be well-formed
 
 int main ()
 {
-  f (aip);  // { dg-error "'A' is an inaccessible base of 'B'|conversion" "" }
+  f (aip);  // { dg-error "'A' is an inaccessible base of 'B'|conversion" }
 }
diff --git a/gcc/testsuite/g++.dg/parse/args1.C b/gcc/testsuite/g++.dg/parse/args1.C
index 0eb6e64..83112fd 100644
--- a/gcc/testsuite/g++.dg/parse/args1.C
+++ b/gcc/testsuite/g++.dg/parse/args1.C
@@ -8,5 +8,5 @@
 
 void Foo (int)
 {
-  Foo(2 2); // { dg-error "expected" "" }
+  Foo(2 2); // { dg-error "expected" }
 }
diff --git a/gcc/testsuite/g++.dg/parse/attr3.C b/gcc/testsuite/g++.dg/parse/attr3.C
index 848df05..57fa60e 100644
--- a/gcc/testsuite/g++.dg/parse/attr3.C
+++ b/gcc/testsuite/g++.dg/parse/attr3.C
@@ -4,10 +4,10 @@ enum __attribute__ ((deprecated)) E { e };
 struct S { enum __attribute__ ((deprecated)) F { f = e }; };
 
 int main () {
-    E x;	// { dg-warning "'E' is deprecated" "" }
+    E x;	// { dg-warning "'E' is deprecated" }
     x = e;
 
-    S::F y;	// { dg-warning "'F' is deprecated" "" }
+    S::F y;	// { dg-warning "'F' is deprecated" }
     y = S::f;
 
     return x + y;
diff --git a/gcc/testsuite/g++.dg/parse/constant4.C b/gcc/testsuite/g++.dg/parse/constant4.C
index 626dd9e..ef3f4ad 100644
--- a/gcc/testsuite/g++.dg/parse/constant4.C
+++ b/gcc/testsuite/g++.dg/parse/constant4.C
@@ -18,7 +18,7 @@ void Foo ()
   
   static const unsigned J = X<T>::J; // { dg-message "not initialized with a constant expression" }
   
-  Y<J> j; // { dg-error "constant|template argument" "" }
+  Y<J> j; // { dg-error "constant|template argument" }
 }
 
 struct A 
@@ -34,7 +34,7 @@ template <typename> struct X
 
 void Baz ()
 {
-  Foo<int> (); // { dg-message "required" "" }
+  Foo<int> (); // { dg-message "required" }
 }
 
   
diff --git a/gcc/testsuite/g++.dg/parse/crash10.C b/gcc/testsuite/g++.dg/parse/crash10.C
index 712e876..2482242 100644
--- a/gcc/testsuite/g++.dg/parse/crash10.C
+++ b/gcc/testsuite/g++.dg/parse/crash10.C
@@ -10,4 +10,4 @@
 class 
 {
   typename::
-; // { dg-error "" "" }
+; // { dg-error "" }
diff --git a/gcc/testsuite/g++.dg/parse/crash18.C b/gcc/testsuite/g++.dg/parse/crash18.C
index 94be360..7e326aa 100644
--- a/gcc/testsuite/g++.dg/parse/crash18.C
+++ b/gcc/testsuite/g++.dg/parse/crash18.C
@@ -4,4 +4,4 @@
 // PR 18095: ICE
 // Origin: Volker Reichelt <reichelt@gcc.gnu.org>
 
-struct A // { dg-error "expected" "" }
+struct A // { dg-error "expected" }
diff --git a/gcc/testsuite/g++.dg/parse/crash19.C b/gcc/testsuite/g++.dg/parse/crash19.C
index cc50d95..482a94b 100644
--- a/gcc/testsuite/g++.dg/parse/crash19.C
+++ b/gcc/testsuite/g++.dg/parse/crash19.C
@@ -4,4 +4,4 @@
 // PR 18095: ICE
 // Origin: Volker Reichelt <reichelt@gcc.gnu.org>
 
-struct A {} // { dg-error "expected" "" }
+struct A {} // { dg-error "expected" }
diff --git a/gcc/testsuite/g++.dg/parse/crash20.C b/gcc/testsuite/g++.dg/parse/crash20.C
index b601408..7868643 100644
--- a/gcc/testsuite/g++.dg/parse/crash20.C
+++ b/gcc/testsuite/g++.dg/parse/crash20.C
@@ -8,7 +8,7 @@
 
 template<typename T> struct A
 {
-  typedef typename T::X Y; // { dg-error "not a class" "" }
+  typedef typename T::X Y; // { dg-error "not a class" }
 };
 
-A<int>::Y y; // { dg-message "required from here" "" }
+A<int>::Y y; // { dg-message "required from here" }
diff --git a/gcc/testsuite/g++.dg/parse/crash21.C b/gcc/testsuite/g++.dg/parse/crash21.C
index 623bbec..d30f23c 100644
--- a/gcc/testsuite/g++.dg/parse/crash21.C
+++ b/gcc/testsuite/g++.dg/parse/crash21.C
@@ -1,7 +1,7 @@
 namespace N
 {
-  struct A; // { dg-message "previous declaration" "" }
+  struct A; // { dg-message "previous declaration" }
 }
 
 template<int I>
-struct N::A {}; // { dg-error "redeclared" "" }
+struct N::A {}; // { dg-error "redeclared" }
diff --git a/gcc/testsuite/g++.dg/parse/crash22.C b/gcc/testsuite/g++.dg/parse/crash22.C
index ba88703..7bd89ef 100644
--- a/gcc/testsuite/g++.dg/parse/crash22.C
+++ b/gcc/testsuite/g++.dg/parse/crash22.C
@@ -13,8 +13,8 @@ namespace N
 
 using namespace N;
 
-int A::i; // { dg-message "ambiguous|declared here" "" }
-int A::i; // { dg-message "ambiguous|redefinition of" "" }
+int A::i; // { dg-message "ambiguous|declared here" }
+int A::i; // { dg-message "ambiguous|redefinition of" }
 
 namespace N
 {
diff --git a/gcc/testsuite/g++.dg/parse/crash32.C b/gcc/testsuite/g++.dg/parse/crash32.C
index df6aa55..88ec42b 100644
--- a/gcc/testsuite/g++.dg/parse/crash32.C
+++ b/gcc/testsuite/g++.dg/parse/crash32.C
@@ -9,5 +9,5 @@ struct Ast
 void
 Ast::accept (Visitor& v)
 {
-  v (*this); // { dg-error "no match for call" "" }
+  v (*this); // { dg-error "no match for call" }
 }
diff --git a/gcc/testsuite/g++.dg/parse/decl-specifier-1.C b/gcc/testsuite/g++.dg/parse/decl-specifier-1.C
index 5c39b60..e178d29 100644
--- a/gcc/testsuite/g++.dg/parse/decl-specifier-1.C
+++ b/gcc/testsuite/g++.dg/parse/decl-specifier-1.C
@@ -8,7 +8,7 @@ namespace N
     struct X { };
 }
 
-N::X X;                           // { dg-error "" "" }
+N::X X;                           // { dg-error "" }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/parse/error58.C b/gcc/testsuite/g++.dg/parse/error58.C
index 5ed6e1e..4e96baf 100644
--- a/gcc/testsuite/g++.dg/parse/error58.C
+++ b/gcc/testsuite/g++.dg/parse/error58.C
@@ -4,4 +4,4 @@
 
 struct A;
 void foo ();
-void f() { alignas (foo (A)); } // { dg-error "expected" "" }
+void f() { alignas (foo (A)); } // { dg-error "expected" }
diff --git a/gcc/testsuite/g++.dg/parse/local-class1.C b/gcc/testsuite/g++.dg/parse/local-class1.C
index 518dd7a..28e295a 100644
--- a/gcc/testsuite/g++.dg/parse/local-class1.C
+++ b/gcc/testsuite/g++.dg/parse/local-class1.C
@@ -9,6 +9,6 @@ void f ()
 {
   class c
     {
-      friend void g () { } // { dg-error "local class" "" }
+      friend void g () { } // { dg-error "local class" }
     };
 }
diff --git a/gcc/testsuite/g++.dg/parse/non-dependent2.C b/gcc/testsuite/g++.dg/parse/non-dependent2.C
index a2ae81d..c224970 100644
--- a/gcc/testsuite/g++.dg/parse/non-dependent2.C
+++ b/gcc/testsuite/g++.dg/parse/non-dependent2.C
@@ -8,14 +8,14 @@
 template <class T>
 struct Foo {
   int j; // we never see this one.
-  int k; // { dg-message "Foo" "" }
+  int k; // { dg-message "Foo" }
   
 };
 
 struct Baz 
 {
   int j;
-  int k; // { dg-message "candidates" "" }
+  int k; // { dg-message "candidates" }
   
 };
 
@@ -23,7 +23,7 @@ template <class T>
 struct Bar : public Foo<T>, Baz {
   
   int baz () { return j; } // binds to Baz::j
-  int foo () { return this->k; } // { dg-error "request for member" "" }
+  int foo () { return this->k; } // { dg-error "request for member" }
 };
 
 int main()
@@ -31,7 +31,7 @@ int main()
   Bar<int> bar;
 
   bar.baz ();
-  bar.foo (); // { dg-message "required" "" }
+  bar.foo (); // { dg-message "required" }
   
   return 0;
 }
diff --git a/gcc/testsuite/g++.dg/parse/parameter-declaration-1.C b/gcc/testsuite/g++.dg/parse/parameter-declaration-1.C
index 1eaa00e..5ff3fb2 100644
--- a/gcc/testsuite/g++.dg/parse/parameter-declaration-1.C
+++ b/gcc/testsuite/g++.dg/parse/parameter-declaration-1.C
@@ -3,4 +3,4 @@
 // { dg-do compile }
 
 struct {
-   a(void = 0; a(0), a(0)	// { dg-error "" "" }
+   a(void = 0; a(0), a(0)	// { dg-error "" }
diff --git a/gcc/testsuite/g++.dg/parse/ptrmem2.C b/gcc/testsuite/g++.dg/parse/ptrmem2.C
index bbc116e..d2b0260 100644
--- a/gcc/testsuite/g++.dg/parse/ptrmem2.C
+++ b/gcc/testsuite/g++.dg/parse/ptrmem2.C
@@ -8,4 +8,4 @@
 
 namespace A {}
 
-int A::* p; // { dg-error "is a namespace" "" }
+int A::* p; // { dg-error "is a namespace" }
diff --git a/gcc/testsuite/g++.dg/parse/ptrmem3.C b/gcc/testsuite/g++.dg/parse/ptrmem3.C
index 444f25c..753b45f 100644
--- a/gcc/testsuite/g++.dg/parse/ptrmem3.C
+++ b/gcc/testsuite/g++.dg/parse/ptrmem3.C
@@ -7,5 +7,5 @@
 
 template<typename> struct A
 {
-  int A<0>::* p; // { dg-error "(type/value mismatch)|(expected)" "" }
+  int A<0>::* p; // { dg-error "(type/value mismatch)|(expected)" }
 };
diff --git a/gcc/testsuite/g++.dg/parse/saved1.C b/gcc/testsuite/g++.dg/parse/saved1.C
index f728108..0153fb2 100644
--- a/gcc/testsuite/g++.dg/parse/saved1.C
+++ b/gcc/testsuite/g++.dg/parse/saved1.C
@@ -1,6 +1,6 @@
 // Test that the parser doesn't go into an infinite loop from ignoring the
 // PRE_PARSED_FUNCTION_DECL token.
 
-class C { static void* operator new(size_t); }; // { dg-error "" "" }
-void* C::operator new(size_t) { return 0; } // { dg-error "" "" }
-class D { D(int i): integer(i){}}; // { dg-error "" "" }
+class C { static void* operator new(size_t); }; // { dg-error "" }
+void* C::operator new(size_t) { return 0; } // { dg-error "" }
+class D { D(int i): integer(i){}}; // { dg-error "" }
diff --git a/gcc/testsuite/g++.dg/tc1/dr101.C b/gcc/testsuite/g++.dg/tc1/dr101.C
index 0316aaa..e36add7 100644
--- a/gcc/testsuite/g++.dg/tc1/dr101.C
+++ b/gcc/testsuite/g++.dg/tc1/dr101.C
@@ -17,10 +17,10 @@ namespace Test1 {
 
 namespace Test2 {
 
-  typedef unsigned int X;   // { dg-bogus "X" "" }
+  typedef unsigned int X;   // { dg-bogus "X" }
   extern "C" int f2();
   namespace N {
-    typedef unsigned int X; // { dg-bogus "X" "" }
+    typedef unsigned int X; // { dg-bogus "X" }
     extern "C" int f2();
   }
   using namespace N;
diff --git a/gcc/testsuite/g++.dg/tc1/dr142.C b/gcc/testsuite/g++.dg/tc1/dr142.C
index 2568644..2f03702 100644
--- a/gcc/testsuite/g++.dg/tc1/dr142.C
+++ b/gcc/testsuite/g++.dg/tc1/dr142.C
@@ -16,17 +16,17 @@ class DD: public D {
 };
 
 void DD::f() {
-  mi = 3;          // { dg-error "within this context" "" }
-  si = 3;          // { dg-error "within this context" "" }
+  mi = 3;          // { dg-error "within this context" }
+  si = 3;          // { dg-error "within this context" }
   ::B b;
   b.mi = 3;
   b.si = 3;
   ::B::si = 3;
-  ::B* bp1 = this;        // { dg-error "inaccessible base" "" }
+  ::B* bp1 = this;        // { dg-error "inaccessible base" }
   ::B* bp2 = (::B*)this;
   bp2->mi = 3;
 
 
-  B b2;                   // { dg-error "within this context" "" }
-  B::si = 3;              // { dg-error "within this context" "" }
+  B b2;                   // { dg-error "within this context" }
+  B::si = 3;              // { dg-error "within this context" }
 }
diff --git a/gcc/testsuite/g++.dg/tc1/dr176.C b/gcc/testsuite/g++.dg/tc1/dr176.C
index 7f4d830..52ab926 100644
--- a/gcc/testsuite/g++.dg/tc1/dr176.C
+++ b/gcc/testsuite/g++.dg/tc1/dr176.C
@@ -6,7 +6,7 @@ namespace N1 {
   template <class T> struct Base {
     Base* p;
     Base<T*>* p2;
-    ::Base* p3;    // { dg-error "" "" }
+    ::Base* p3;    // { dg-error "" }
   };
 
   template <class T> struct Derived: public Base<T> {
@@ -22,7 +22,7 @@ namespace N1 {
 namespace N2 {
   template <class T> struct Base {};
   template <class T> struct Derived: public Base<T> {
-    typename Derived::template Base<double>* p1;  // { dg-bogus "" "" }
+    typename Derived::template Base<double>* p1;  // { dg-bogus "" }
   };
 
   template struct Derived<void>;
diff --git a/gcc/testsuite/g++.dg/template/conv4.C b/gcc/testsuite/g++.dg/template/conv4.C
index 01f158a..f60759a 100644
--- a/gcc/testsuite/g++.dg/template/conv4.C
+++ b/gcc/testsuite/g++.dg/template/conv4.C
@@ -21,7 +21,7 @@ struct D
 {
   int Foo ()
   {
-    return operator int (); // { dg-error "not defined" "" }
+    return operator int (); // { dg-error "not defined" }
   }
 };
 
diff --git a/gcc/testsuite/g++.dg/template/crash56.C b/gcc/testsuite/g++.dg/template/crash56.C
index 03bddf4..ae2d019 100644
--- a/gcc/testsuite/g++.dg/template/crash56.C
+++ b/gcc/testsuite/g++.dg/template/crash56.C
@@ -12,5 +12,5 @@ namespace N
 
 template<typename T> void g (N::A *p)
 {
-  (void) A (p); // { dg-message "" "" }
+  (void) A (p); // { dg-message "" }
 }
diff --git a/gcc/testsuite/g++.dg/template/dependent-expr2.C b/gcc/testsuite/g++.dg/template/dependent-expr2.C
index 06f056b..dcba6e1 100644
--- a/gcc/testsuite/g++.dg/template/dependent-expr2.C
+++ b/gcc/testsuite/g++.dg/template/dependent-expr2.C
@@ -18,6 +18,6 @@ struct B
 {
   bool bar(A& a)
   {
-    return a.foo == 0; // { dg-error "" "" }
+    return a.foo == 0; // { dg-error "" }
   }
 };
diff --git a/gcc/testsuite/g++.dg/template/error1.C b/gcc/testsuite/g++.dg/template/error1.C
index 03a8323..1bf5228 100644
--- a/gcc/testsuite/g++.dg/template/error1.C
+++ b/gcc/testsuite/g++.dg/template/error1.C
@@ -8,6 +8,6 @@
 template <class T> void make_pair(T x);
 
 void foo(){
-  struct fps_chan_ID fps; // { dg-error "incomplete" "" }
-  make_pair(fps);         // { dg-bogus "no matching function" "" }
+  struct fps_chan_ID fps; // { dg-error "incomplete" }
+  make_pair(fps);         // { dg-bogus "no matching function" }
 }
diff --git a/gcc/testsuite/g++.dg/template/error2.C b/gcc/testsuite/g++.dg/template/error2.C
index a7f199e..68d883c 100644
--- a/gcc/testsuite/g++.dg/template/error2.C
+++ b/gcc/testsuite/g++.dg/template/error2.C
@@ -13,16 +13,16 @@ template<class T> struct X
 template<class T >
 struct Derived
 {
-  class Nested : public X<T> // { dg-message "required" "" }
+  class Nested : public X<T> // { dg-message "required" }
   {
   };
   
-  Nested m; // { dg-message "required" "" }
+  Nested m; // { dg-message "required" }
   
   void Foo ();
 };
 
 void Foo (Derived<void> &x)
 {
-  x.Foo (); // { dg-message "required" "" }
+  x.Foo (); // { dg-message "required" }
 }
diff --git a/gcc/testsuite/g++.dg/template/explicit6.C b/gcc/testsuite/g++.dg/template/explicit6.C
index f740269..a28fd9e 100644
--- a/gcc/testsuite/g++.dg/template/explicit6.C
+++ b/gcc/testsuite/g++.dg/template/explicit6.C
@@ -5,4 +5,4 @@
 // Bug 19895: ICE on invalid
 
 struct A;
-template A<>::A(); // { dg-error "(not a template)|(explicit qualification)" "" }
+template A<>::A(); // { dg-error "(not a template)|(explicit qualification)" }
diff --git a/gcc/testsuite/g++.dg/template/init-list.C b/gcc/testsuite/g++.dg/template/init-list.C
index 6a868b2..32e7203 100644
--- a/gcc/testsuite/g++.dg/template/init-list.C
+++ b/gcc/testsuite/g++.dg/template/init-list.C
@@ -12,6 +12,6 @@ struct Derived : Base<T> {
 };
 
 template<typename T>
-Derived<T>::Derived() : Base(4) { } // { dg-error "have any field" "" }
+Derived<T>::Derived() : Base(4) { } // { dg-error "have any field" }
 
 
diff --git a/gcc/testsuite/g++.dg/template/local1.C b/gcc/testsuite/g++.dg/template/local1.C
index 4293aca..58f96b4 100644
--- a/gcc/testsuite/g++.dg/template/local1.C
+++ b/gcc/testsuite/g++.dg/template/local1.C
@@ -14,7 +14,7 @@ template<class T> void A::f()
   struct B
   {
     void g() {}
-    static int x;	// { dg-error "static.*int A::f\\(\\)::B::x" "" }
+    static int x;	// { dg-error "static.*int A::f\\(\\)::B::x" }
   };
 }
 
diff --git a/gcc/testsuite/g++.dg/template/lookup2.C b/gcc/testsuite/g++.dg/template/lookup2.C
index de4e1d9..ac299fa 100644
--- a/gcc/testsuite/g++.dg/template/lookup2.C
+++ b/gcc/testsuite/g++.dg/template/lookup2.C
@@ -9,10 +9,10 @@ struct B {};
 
 template <typename T> void Bar ()
 {
-  T::foo (); // { dg-error "is not a member of" "" }
+  T::foo (); // { dg-error "is not a member of" }
 }
 
 void Foo ()
 {
-  Bar<B> (); // { dg-message "required" "" }
+  Bar<B> (); // { dg-message "required" }
 }
diff --git a/gcc/testsuite/g++.dg/template/meminit2.C b/gcc/testsuite/g++.dg/template/meminit2.C
index f6afa01..db6e042 100644
--- a/gcc/testsuite/g++.dg/template/meminit2.C
+++ b/gcc/testsuite/g++.dg/template/meminit2.C
@@ -14,7 +14,7 @@ struct A : typename O<T>::template I<int> {   // { dg-error "keyword 'typename'
 
 template <typename T> 
 struct B : O<T>::template I<int> {
-  B() :    O<T>::I<int>()   // { dg-error "used as template|it is a template" "" }
+  B() :    O<T>::I<int>()   // { dg-error "used as template|it is a template" }
   {}
 };
 
diff --git a/gcc/testsuite/g++.dg/template/nontype25.C b/gcc/testsuite/g++.dg/template/nontype25.C
index 85393c1..3918bea 100644
--- a/gcc/testsuite/g++.dg/template/nontype25.C
+++ b/gcc/testsuite/g++.dg/template/nontype25.C
@@ -7,7 +7,7 @@ template<const A* a> class C {};
 template<const B* b> class D {};
 template<B* b> class E {};
 
-template<const B* b> void f(D<b> &, C<static_cast<const A*>(b)> &) {} // { dg-error "" "" }
+template<const B* b> void f(D<b> &, C<static_cast<const A*>(b)> &) {} // { dg-error "" }
 template<const B* b> void g(D<b> &, E<const_cast<B*>(b)> &) {} // { dg-error "" "" { target { ! c++11 } } }
 
 B b;
diff --git a/gcc/testsuite/g++.dg/template/ptrmem2.C b/gcc/testsuite/g++.dg/template/ptrmem2.C
index 6aa2512..94c077c 100644
--- a/gcc/testsuite/g++.dg/template/ptrmem2.C
+++ b/gcc/testsuite/g++.dg/template/ptrmem2.C
@@ -11,5 +11,5 @@ template <typename T> T A::* Foo (); // { dg-error "reference" }
 
 void Baz ()
 {
-  Foo <int &> (); // { dg-error "no matching function" "" }
+  Foo <int &> (); // { dg-error "no matching function" }
 }
diff --git a/gcc/testsuite/g++.dg/template/qualttp19.C b/gcc/testsuite/g++.dg/template/qualttp19.C
index be6676c..6e2e204 100644
--- a/gcc/testsuite/g++.dg/template/qualttp19.C
+++ b/gcc/testsuite/g++.dg/template/qualttp19.C
@@ -26,7 +26,7 @@ int main()
    // Two typedefs lead to the instant. of the less spec. ("wrong") template
   typedef int& r_type;
   typedef const r_type cr_type;
-  call_traits<cr_type>::type_less_spec var  = num; // { dg-error "" "" }
+  call_traits<cr_type>::type_less_spec var  = num; // { dg-error "" }
   
    // The explicit type leads to the instantiation of the "correct" one
   call_traits<const int&>::type_more_spec var2 = num;
diff --git a/gcc/testsuite/g++.dg/template/qualttp20.C b/gcc/testsuite/g++.dg/template/qualttp20.C
index 8073fe3..52989ba 100644
--- a/gcc/testsuite/g++.dg/template/qualttp20.C
+++ b/gcc/testsuite/g++.dg/template/qualttp20.C
@@ -16,7 +16,7 @@ struct AS
 
 template <typename T> struct B1 : T
 {
-  typedef typename T::L __restrict__ r;// { dg-error "'__restrict__' qualifiers cannot" "" }
+  typedef typename T::L __restrict__ r;// { dg-error "'__restrict__' qualifiers cannot" }
   typedef typename T::myT __restrict__ p;
 
   // The following are DR 295 dependent
@@ -32,5 +32,5 @@ template <typename T> struct B2 : T
   myconst b;
 };
 
-B1<AS> b1;	// { dg-message "required" "" }
+B1<AS> b1;	// { dg-message "required" }
 B2<AS> b2;
diff --git a/gcc/testsuite/g++.dg/template/ttp3.C b/gcc/testsuite/g++.dg/template/ttp3.C
index a7f231a..408e1c8 100644
--- a/gcc/testsuite/g++.dg/template/ttp3.C
+++ b/gcc/testsuite/g++.dg/template/ttp3.C
@@ -14,7 +14,7 @@ class OUTER {
   template <class T>
   class List { };
   
-  vector<class List> data; // { dg-error "invalid|required|ISO C" "" }
+  vector<class List> data; // { dg-error "invalid|required|ISO C" }
 };
 
 template <class T>
@@ -23,4 +23,4 @@ class List { };
 // This next line should just do a lookup of 'class List', and then
 // get a type/value mismatch. Instead we try and push 'class List'
 // into the global namespace and get a redeclaration error.
-vector<class List > data;	// { dg-error "invalid|required|declaration" "" }
+vector<class List > data;	// { dg-error "invalid|required|declaration" }
diff --git a/gcc/testsuite/g++.dg/template/unify4.C b/gcc/testsuite/g++.dg/template/unify4.C
index 19d9f3a..1cda4a0 100644
--- a/gcc/testsuite/g++.dg/template/unify4.C
+++ b/gcc/testsuite/g++.dg/template/unify4.C
@@ -15,4 +15,4 @@ struct A { int i; };
 
 static void f (int A::* pmi) { }
 
-int main () { f (null); } // { dg-error "cannot convert" "" }
+int main () { f (null); } // { dg-error "cannot convert" }
diff --git a/gcc/testsuite/g++.dg/template/unify6.C b/gcc/testsuite/g++.dg/template/unify6.C
index 8228e3e..95e24a25 100644
--- a/gcc/testsuite/g++.dg/template/unify6.C
+++ b/gcc/testsuite/g++.dg/template/unify6.C
@@ -18,6 +18,6 @@ void Bar ()
 
   Foo3 (&Baz);
 
-  Foo3 (&Baz, &Baz); // { dg-error "no matching function" "" }
+  Foo3 (&Baz, &Baz); // { dg-error "no matching function" }
   // { dg-message "(candidate|incompatible cv-qualifiers)" "candidate note" { target *-*-* } .-1 }
 }
diff --git a/gcc/testsuite/g++.dg/template/unify7.C b/gcc/testsuite/g++.dg/template/unify7.C
index 91cd58f..9dac57a 100644
--- a/gcc/testsuite/g++.dg/template/unify7.C
+++ b/gcc/testsuite/g++.dg/template/unify7.C
@@ -10,6 +10,6 @@ int &f ();
 int main()
 {
   Foo (f);
-  Baz (f); // { dg-error "no matching function" "" }
+  Baz (f); // { dg-error "no matching function" }
   // { dg-message "(candidate|incompatible cv-qualifiers)" "candidate note" { target *-*-* } .-1 }
 }
diff --git a/gcc/testsuite/g++.dg/template/warn1.C b/gcc/testsuite/g++.dg/template/warn1.C
index 5067d76..53b04ec 100644
--- a/gcc/testsuite/g++.dg/template/warn1.C
+++ b/gcc/testsuite/g++.dg/template/warn1.C
@@ -9,8 +9,8 @@
 template <class T>  void Foo(T i) 
 { 
   i++, i++;
-  i, i++; // { dg-warning "left operand" "" }
-  i++, i; // { dg-warning "right operand" "" }
+  i, i++; // { dg-warning "left operand" }
+  i++, i; // { dg-warning "right operand" }
   for (;; --i, ++i)
     ;
 } 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C b/gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C
index 91f43ae..41343ee 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C
@@ -49,4 +49,4 @@ main ()
 {
  E e;
  e.bar ();
-} // { dg-message  "note: file" "" }
+} // { dg-message  "note: file" }
diff --git a/gcc/testsuite/g++.dg/ubsan/shift-1.C b/gcc/testsuite/g++.dg/ubsan/shift-1.C
index 493a55c..e98bb08 100644
--- a/gcc/testsuite/g++.dg/ubsan/shift-1.C
+++ b/gcc/testsuite/g++.dg/ubsan/shift-1.C
@@ -8,10 +8,10 @@ foo (int x)
   /* None of the following should pass.  */
   switch (x)
     {
-    case 1 >> -1: /* { dg-error "operand of shift" "" } */
-    case -1 >> -1: /* { dg-error "operand of shift" "" } */
-    case 1 << -1: /* { dg-error "operand of shift" "" } */
-    case -1 << -1: /* { dg-error "operand of shift" "" } */
+    case 1 >> -1: /* { dg-error "operand of shift" } */
+    case -1 >> -1: /* { dg-error "operand of shift" } */
+    case 1 << -1: /* { dg-error "operand of shift" } */
+    case -1 << -1: /* { dg-error "operand of shift" } */
       return 1;
     }
   return 0;
@@ -23,8 +23,8 @@ bar (int x)
   /* None of the following should pass.  */
   switch (x)
     {
-    case -1 >> 200: /* { dg-error "operand of shift" "" } */
-    case 1 << 200: /* { dg-error "operand of shift" "" } */
+    case -1 >> 200: /* { dg-error "operand of shift" } */
+    case 1 << 200: /* { dg-error "operand of shift" } */
       return 1;
     }
   return 0;
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-2.C b/gcc/testsuite/g++.dg/warn/Wunused-2.C
index 593bf48..9cdd11e 100644
--- a/gcc/testsuite/g++.dg/warn/Wunused-2.C
+++ b/gcc/testsuite/g++.dg/warn/Wunused-2.C
@@ -2,5 +2,5 @@
 // { dg-options "-Wunused -O3" }
 
 static const int i = 0;
-static void f() { }		/* { dg-warning "defined but not used" "" } */
+static void f() { }		/* { dg-warning "defined but not used" } */
 static inline void g() { }
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-4.C b/gcc/testsuite/g++.dg/warn/Wunused-4.C
index 9018e92e..978f335 100644
--- a/gcc/testsuite/g++.dg/warn/Wunused-4.C
+++ b/gcc/testsuite/g++.dg/warn/Wunused-4.C
@@ -10,11 +10,11 @@
 
 struct C1 {
   // Only use in-charge ctor
-  C1(int bi) {}  // { dg-warning "unused parameter" "" }
+  C1(int bi) {}  // { dg-warning "unused parameter" }
 };
 struct C2 {
   // Only use base ctor
-  C2(int bi) {}  // { dg-warning "unused parameter" "" }
+  C2(int bi) {}  // { dg-warning "unused parameter" }
 };
 
 struct D : C2
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-6.C b/gcc/testsuite/g++.dg/warn/Wunused-6.C
index 58a3f64..198fe96 100644
--- a/gcc/testsuite/g++.dg/warn/Wunused-6.C
+++ b/gcc/testsuite/g++.dg/warn/Wunused-6.C
@@ -5,7 +5,7 @@
 void foo()
 {
   if (false)
-    if (int i=0)  // { dg-warning "unused" "" }
-      int j=0;    // { dg-warning "unused" "" }
+    if (int i=0)  // { dg-warning "unused" }
+      int j=0;    // { dg-warning "unused" }
 }
 
diff --git a/gcc/testsuite/g++.dg/warn/deprecated-6.C b/gcc/testsuite/g++.dg/warn/deprecated-6.C
index ad9eb3d..a2c4b58 100644
--- a/gcc/testsuite/g++.dg/warn/deprecated-6.C
+++ b/gcc/testsuite/g++.dg/warn/deprecated-6.C
@@ -5,17 +5,17 @@
 typedef int INT1 __attribute__((deprecated("Please avoid INT1")));
 typedef INT1 INT2 __attribute__ ((__deprecated__("Please avoid INT2")));
 
-typedef INT1 INT1a; 			/* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
+typedef INT1 INT1a; 			/* { dg-warning "'INT1' is deprecated: Please avoid INT1" } */
 
-INT1 should_be_unavailable; 		/* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
+INT1 should_be_unavailable; 		/* { dg-warning "'INT1' is deprecated: Please avoid INT1" } */
 INT1a should_not_be_deprecated;
 
 INT1 f1(void) __attribute__ ((deprecated("Please avoid f1"))); 
-INT1 f2(void) { return 0; }		/* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
+INT1 f2(void) { return 0; }		/* { dg-warning "'INT1' is deprecated: Please avoid INT1" } */
 
 INT2 f3(void) __attribute__ ((__deprecated__("Please avoid f3"))); 
-INT2 f4(void) { return 0; }		/* { dg-warning "'INT2' is deprecated: Please avoid INT2" "" } */
-int f5(INT2 x);				/* { dg-warning "'INT2' is deprecated" "" } */
+INT2 f4(void) { return 0; }		/* { dg-warning "'INT2' is deprecated: Please avoid INT2" } */
+int f5(INT2 x);				/* { dg-warning "'INT2' is deprecated" } */
 int f6(INT2 x) __attribute__ ((__deprecated__("Please avoid f6")));
 
 typedef enum Color {red, green, blue} Color __attribute__((deprecated("Please avoid Color")));
@@ -23,7 +23,7 @@ typedef enum Color {red, green, blue} Color __attribute__((deprecated("Please av
 int g1;
 int g2 __attribute__ ((deprecated("Please avoid g2")));
 int g3 __attribute__ ((__deprecated__("Please avoid g3")));
-Color k;				/* { dg-warning "'Color' is deprecated: Please avoid Color" "" } */
+Color k;				/* { dg-warning "'Color' is deprecated: Please avoid Color" } */
 
 typedef struct {
   int field1;
@@ -44,13 +44,13 @@ typedef struct {
 
 int func1()
 {
-   INT1 w;				/* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
+   INT1 w;				/* { dg-warning "'INT1' is deprecated: Please avoid INT1" } */
    int x __attribute__ ((deprecated("Please avoid x")));
    int y __attribute__ ((__deprecated__("Please avoid y")));
    int z;
-   int (*pf)() = f1;			/* { dg-warning "'INT1 f1\\(\\)' is deprecated: Please avoid f1" "" } */
+   int (*pf)() = f1;			/* { dg-warning "'INT1 f1\\(\\)' is deprecated: Please avoid f1" } */
 
-   z = w + x + y + g1 + g2 + g3;	/* { dg-warning "'x' is deprecated: Please avoid x" "" } */
+   z = w + x + y + g1 + g2 + g3;	/* { dg-warning "'x' is deprecated: Please avoid x" } */
 					/* { dg-warning "'y' is deprecated: Please avoid y" "y" { target *-*-* } .-1 } */
 					/* { dg-warning "'g2' is deprecated: Please avoid g2" "g2" { target *-*-* } .-2 } */
 					/* { dg-warning "'g3' is deprecated: Please avoid g3" "g3" { target *-*-* } .-3 } */
@@ -62,34 +62,34 @@ int func2(S1 *p)
   S1 lp;
   
   if (p->field1)
-     return p->field2;			/* { dg-warning "'S1::field2' is deprecated: Please avoid field2" "" } */
-  else if (lp.field4)			/* { dg-warning "'S1::field4' is deprecated: Please avoid field4" "" } */
+     return p->field2;			/* { dg-warning "'S1::field2' is deprecated: Please avoid field2" } */
+  else if (lp.field4)			/* { dg-warning "'S1::field4' is deprecated: Please avoid field4" } */
      return p->field3;
   
   p->u1.field5 = g1 + p->field7;
-  p->u2.field9;				/* { dg-warning "'S1::u2' is deprecated: Please avoid u2" "" } */
-  return p->u1.field6 + p->field8;	/* { dg-warning "'S1::<unnamed union>::field6' is deprecated: Please avoid field6" "" } */
+  p->u2.field9;				/* { dg-warning "'S1::u2' is deprecated: Please avoid u2" } */
+  return p->u1.field6 + p->field8;	/* { dg-warning "'S1::<unnamed union>::field6' is deprecated: Please avoid field6" } */
 					/* { dg-warning "'S1::field8' is deprecated: Please avoid field8" "field8" { target *-*-* } .-1 } */
 }
 
 struct SS1 {
   int x;
-  INT1 y; 				/* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
+  INT1 y; 				/* { dg-warning "'INT1' is deprecated: Please avoid INT1" } */
 } __attribute__ ((deprecated("Please avoid SS1")));
 
-struct SS1 *p1;				/* { dg-warning "'SS1' is deprecated: Please avoid SS1" "" } */
+struct SS1 *p1;				/* { dg-warning "'SS1' is deprecated: Please avoid SS1" } */
 
 struct __attribute__ ((__deprecated__("Please avoid SS2"))) SS2 {
   int x;
-  INT1 y; 				/* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
+  INT1 y; 				/* { dg-warning "'INT1' is deprecated: Please avoid INT1" } */
 };
 
-struct SS2 *p2;				/* { dg-warning "'SS2' is deprecated: Please avoid SS2" "" } */
+struct SS2 *p2;				/* { dg-warning "'SS2' is deprecated: Please avoid SS2" } */
 
 class T {
   public:
     void member1(int) __attribute__ ((deprecated("Please avoid member1")));
-    void member2(INT1) __attribute__ ((__deprecated__("Please avoid member2"))); /* { dg-warning "'INT1' is deprecated" "" } */
+    void member2(INT1) __attribute__ ((__deprecated__("Please avoid member2"))); /* { dg-warning "'INT1' is deprecated" } */
     int member3(T *);
     int x;
 } __attribute__ ((deprecated("Please avoid T")));
@@ -100,11 +100,11 @@ inline void T::member1(int) {}
 
 int T::member3(T *p)		// { dg-warning "'T' is deprecated: Please avoid T" }
 {
-  p->member1(1);			/* { dg-warning "'void T::member1\\(int\\)' is deprecated: Please avoid member1" "" } */
-  (*p).member1(2);			/* { dg-warning "'void T::member1\\(int\\)' is deprecated: Please avoid member1" "" } */
-  p->member2(1);			/* { dg-warning "'void T::member2\\(INT1\\)' is deprecated: Please avoid member2" "" } */
-  (*p).member2(2);			/* { dg-warning "'void T::member2\\(INT1\\)' is deprecated: Please avoid member2" "" } */
+  p->member1(1);			/* { dg-warning "'void T::member1\\(int\\)' is deprecated: Please avoid member1" } */
+  (*p).member1(2);			/* { dg-warning "'void T::member1\\(int\\)' is deprecated: Please avoid member1" } */
+  p->member2(1);			/* { dg-warning "'void T::member2\\(INT1\\)' is deprecated: Please avoid member2" } */
+  (*p).member2(2);			/* { dg-warning "'void T::member2\\(INT1\\)' is deprecated: Please avoid member2" } */
   p->member3(p);
   (*p).member3(p);
-  return f1(); 				/* { dg-warning "'INT1 f1\\(\\)' is deprecated: Please avoid f1" "" } */
+  return f1(); 				/* { dg-warning "'INT1 f1\\(\\)' is deprecated: Please avoid f1" } */
 }
diff --git a/gcc/testsuite/g++.dg/warn/deprecated.C b/gcc/testsuite/g++.dg/warn/deprecated.C
index a5b2aee..8b89a34 100644
--- a/gcc/testsuite/g++.dg/warn/deprecated.C
+++ b/gcc/testsuite/g++.dg/warn/deprecated.C
@@ -6,18 +6,18 @@
 typedef int INT1 __attribute__((deprecated));
 typedef INT1 INT2 __attribute__ ((__deprecated__));
 
-typedef INT1 INT1a; 			/* { dg-warning "'INT1' is deprecated" "" } */
+typedef INT1 INT1a; 			/* { dg-warning "'INT1' is deprecated" } */
 typedef INT1 INT1b __attribute__ ((deprecated));
 
-INT1 should_be_unavailable; 		/* { dg-warning "'INT1' is deprecated" "" } */
+INT1 should_be_unavailable; 		/* { dg-warning "'INT1' is deprecated" } */
 INT1a should_not_be_deprecated;
 
 INT1 f1(void) __attribute__ ((deprecated)); 
-INT1 f2(void) { return 0; }		/* { dg-warning "'INT1' is deprecated" "" } */
+INT1 f2(void) { return 0; }		/* { dg-warning "'INT1' is deprecated" } */
 
 INT2 f3(void) __attribute__ ((__deprecated__)); 
-INT2 f4(void) { return 0; }		/* { dg-warning "'INT2' is deprecated" "" } */
-int f5(INT2 x);				/* { dg-warning "'INT2' is deprecated" "" } */
+INT2 f4(void) { return 0; }		/* { dg-warning "'INT2' is deprecated" } */
+int f5(INT2 x);				/* { dg-warning "'INT2' is deprecated" } */
 int f6(INT2 x) __attribute__ ((__deprecated__));
 
 typedef enum Color {red, green, blue} Color __attribute__((deprecated));
@@ -25,7 +25,7 @@ typedef enum Color {red, green, blue} Color __attribute__((deprecated));
 int g1;
 int g2 __attribute__ ((deprecated));
 int g3 __attribute__ ((__deprecated__));
-Color k;				/* { dg-warning "'Color' is deprecated" "" } */
+Color k;				/* { dg-warning "'Color' is deprecated" } */
 
 typedef struct {
   int field1;
@@ -46,13 +46,13 @@ typedef struct {
 
 int func1()
 {
-   INT1 w;				/* { dg-warning "'INT1' is deprecated" "" } */
+   INT1 w;				/* { dg-warning "'INT1' is deprecated" } */
    int x __attribute__ ((deprecated));
    int y __attribute__ ((__deprecated__));
    int z;
-   int (*pf)() = f1;			/* { dg-warning "'INT1 f1\\(\\)' is deprecated" "" } */
+   int (*pf)() = f1;			/* { dg-warning "'INT1 f1\\(\\)' is deprecated" } */
 
-   z = w + x + y + g1 + g2 + g3;	/* { dg-warning "'x' is deprecated" "" } */
+   z = w + x + y + g1 + g2 + g3;	/* { dg-warning "'x' is deprecated" } */
    					/* { dg-warning "'y' is deprecated" "y" { target *-*-* } .-1 } */
    					/* { dg-warning "'g2' is deprecated" "g2" { target *-*-* } .-2 } */
    					/* { dg-warning "'g3' is deprecated" "g3" { target *-*-* } .-3 } */
@@ -64,36 +64,36 @@ int func2(S1 *p)
   S1 lp;
   
   if (p->field1)
-     return p->field2;			/* { dg-warning "'S1::field2' is deprecated" "" } */
-  else if (lp.field4)			/* { dg-warning "'S1::field4' is deprecated" "" } */
+     return p->field2;			/* { dg-warning "'S1::field2' is deprecated" } */
+  else if (lp.field4)			/* { dg-warning "'S1::field4' is deprecated" } */
      return p->field3;
   
   p->u1.field5 = g1 + p->field7;
-  p->u2.field9;				/* { dg-warning "'S1::u2' is deprecated" "" } */
-  return p->u1.field6 + p->field8;	/* { dg-warning "'S1::<unnamed union>::field6' is deprecated" "" } */
+  p->u2.field9;				/* { dg-warning "'S1::u2' is deprecated" } */
+  return p->u1.field6 + p->field8;	/* { dg-warning "'S1::<unnamed union>::field6' is deprecated" } */
   					/* { dg-warning "'S1::field8' is deprecated" "field8" { target *-*-* } .-1 } */
 }
 
 struct SS1 {
   int x;
-  INT1 y; 				/* { dg-warning "'INT1' is deprecated" "" } */
+  INT1 y; 				/* { dg-warning "'INT1' is deprecated" } */
 } __attribute__ ((deprecated));
 
-struct SS1 *p1;				/* { dg-warning "'SS1' is deprecated" "" } */
+struct SS1 *p1;				/* { dg-warning "'SS1' is deprecated" } */
 
 struct __attribute__ ((__deprecated__)) SS2 {
   int x;
-  INT1 y; 				/* { dg-warning "'INT1' is deprecated" "" } */
+  INT1 y; 				/* { dg-warning "'INT1' is deprecated" } */
 };
 
-struct SS2 *p2;				/* { dg-warning "'SS2' is deprecated" "" } */
+struct SS2 *p2;				/* { dg-warning "'SS2' is deprecated" } */
 #endif
 
 #ifdef __cplusplus
 class T {
   public:
     void member1(int) __attribute__ ((deprecated));
-    void member2(INT1) __attribute__ ((__deprecated__)); /* { dg-warning "'INT1' is deprecated" "" } */
+    void member2(INT1) __attribute__ ((__deprecated__)); /* { dg-warning "'INT1' is deprecated" } */
     int member3(T *);
     int x;
 } __attribute__ ((deprecated));
@@ -104,13 +104,13 @@ inline void T::member1(int) {}
 
 int T::member3(T *p)		// { dg-warning "'T' is deprecated" }
 {
-  p->member1(1);			/* { dg-warning "'void T::member1\\(int\\)' is deprecated" "" } */
-  (*p).member1(2);			/* { dg-warning "'void T::member1\\(int\\)' is deprecated" "" } */
-  p->member2(1);			/* { dg-warning "'void T::member2\\(INT1\\)' is deprecated" "" } */
-  (*p).member2(2);			/* { dg-warning "'void T::member2\\(INT1\\)' is deprecated" "" } */
+  p->member1(1);			/* { dg-warning "'void T::member1\\(int\\)' is deprecated" } */
+  (*p).member1(2);			/* { dg-warning "'void T::member1\\(int\\)' is deprecated" } */
+  p->member2(1);			/* { dg-warning "'void T::member2\\(INT1\\)' is deprecated" } */
+  (*p).member2(2);			/* { dg-warning "'void T::member2\\(INT1\\)' is deprecated" } */
   p->member3(p);
   (*p).member3(p);
-  return f1(); 				/* { dg-warning "'INT1 f1\\(\\)' is deprecated" "" } */
+  return f1(); 				/* { dg-warning "'INT1 f1\\(\\)' is deprecated" } */
 }
 #endif
 
diff --git a/gcc/testsuite/g++.dg/warn/effc1.C b/gcc/testsuite/g++.dg/warn/effc1.C
index 345f8d1..db36b12 100644
--- a/gcc/testsuite/g++.dg/warn/effc1.C
+++ b/gcc/testsuite/g++.dg/warn/effc1.C
@@ -10,7 +10,7 @@ class A
 {
   public:
   A & operator+=( int );
-  A & operator+( int ); // { dg-warning ".* should return by value" "" }
+  A & operator+( int ); // { dg-warning ".* should return by value" }
   A operator+=( float );
   A operator+( float );
 };
diff --git a/gcc/testsuite/g++.dg/warn/effc3.C b/gcc/testsuite/g++.dg/warn/effc3.C
index ba2cc03..7480b29 100644
--- a/gcc/testsuite/g++.dg/warn/effc3.C
+++ b/gcc/testsuite/g++.dg/warn/effc3.C
@@ -28,20 +28,20 @@ struct B {
 
 
 // We should emit a warning for these
-struct C1 {		// { dg-warning "" "" }
+struct C1 {		// { dg-warning "" }
   int *ptr;
   C1();
   ~C1();
 };
 
-struct C2 {		// { dg-warning "" "" }
+struct C2 {		// { dg-warning "" }
   int *ptr;
   C2();
   C2(const C2&);
   ~C2();
 };
 
-struct C3 {		// { dg-warning "" "" }
+struct C3 {		// { dg-warning "" }
   int *ptr;
   C3();
   ~C3();
diff --git a/gcc/testsuite/g++.dg/warn/incomplete1.C b/gcc/testsuite/g++.dg/warn/incomplete1.C
index e880e36..8f21f7b 100644
--- a/gcc/testsuite/g++.dg/warn/incomplete1.C
+++ b/gcc/testsuite/g++.dg/warn/incomplete1.C
@@ -9,9 +9,9 @@
 // (But the deletion does not constitute an ill-formed program. So the
 // program should nevertheless compile, but it should give a warning.)
 
-class A;	// { dg-message "forward declaration of 'class A'" "" }
+class A;	// { dg-message "forward declaration of 'class A'" }
 
-A *a;		// { dg-warning "'a' has incomplete type" "" }
+A *a;		// { dg-warning "'a' has incomplete type" }
 
 int
 main (int argc, char **argv)
diff --git a/gcc/testsuite/g++.dg/warn/inline1.C b/gcc/testsuite/g++.dg/warn/inline1.C
index 24836e7..05b34fe 100644
--- a/gcc/testsuite/g++.dg/warn/inline1.C
+++ b/gcc/testsuite/g++.dg/warn/inline1.C
@@ -5,9 +5,9 @@
 
 // PR 4803. Used inline functions must have a definition.
 
-inline void Foo1 ();  // { dg-warning "inline function" "" }
+inline void Foo1 ();  // { dg-warning "inline function" }
 inline void Bar1 ();
-template <typename T> inline void Foo2(T);   // { dg-warning "inline function" "" }
+template <typename T> inline void Foo2(T);   // { dg-warning "inline function" }
 template <typename T> inline void Bar2(T);
 
 void Baz ()
diff --git a/gcc/testsuite/g++.dg/warn/noeffect2.C b/gcc/testsuite/g++.dg/warn/noeffect2.C
index 8b012c8..773a929 100644
--- a/gcc/testsuite/g++.dg/warn/noeffect2.C
+++ b/gcc/testsuite/g++.dg/warn/noeffect2.C
@@ -10,11 +10,11 @@
 extern "C" void FormatDisk();
   template <class T>
   struct C {
-    C(){ FormatDisk(), 0; }  // { dg-warning "right operand of comma" "" }
+    C(){ FormatDisk(), 0; }  // { dg-warning "right operand of comma" }
   };
   template struct C<int>; // { dg-message "required" }
   template <class T>
-  void f() { FormatDisk(), 0; } // { dg-warning "right operand of comma" "" }
+  void f() { FormatDisk(), 0; } // { dg-warning "right operand of comma" }
   template void f<int> (); // { dg-message "required" }
-void g() { FormatDisk(), 0; } // { dg-warning "right operand of comma" "" }
+void g() { FormatDisk(), 0; } // { dg-warning "right operand of comma" }
 
diff --git a/gcc/testsuite/g++.dg/warn/noeffect4.C b/gcc/testsuite/g++.dg/warn/noeffect4.C
index 612db48..1d451d9 100644
--- a/gcc/testsuite/g++.dg/warn/noeffect4.C
+++ b/gcc/testsuite/g++.dg/warn/noeffect4.C
@@ -79,10 +79,10 @@ template<int I> void Foo (X &x)
   reinterpret_cast<int> (x.Foo ()); // { dg-error "invalid cast" }
   const_cast<X &> (x.Foo ());       // { dg-warning "not used" }
   
-  reinterpret_cast<int *> (&x);// { dg-warning "no effect" "" }
-  const_cast<X &> (x);         // { dg-warning "no effect" "" }
-  sizeof (x++);                // { dg-warning "no effect" "" }
-  __alignof__ (x++);           // { dg-warning "no effect" "" }
+  reinterpret_cast<int *> (&x);// { dg-warning "no effect" }
+  const_cast<X &> (x);         // { dg-warning "no effect" }
+  sizeof (x++);                // { dg-warning "no effect" }
+  __alignof__ (x++);           // { dg-warning "no effect" }
 }
 
 template void Foo<4> (X&);     // { dg-message "required" }
diff --git a/gcc/testsuite/g++.dg/warn/oldcast1.C b/gcc/testsuite/g++.dg/warn/oldcast1.C
index 26c0a5c..d0ca10c 100644
--- a/gcc/testsuite/g++.dg/warn/oldcast1.C
+++ b/gcc/testsuite/g++.dg/warn/oldcast1.C
@@ -9,7 +9,7 @@
 void foo ()
 {
   int i;
-  float f = (float)i;  // { dg-warning "use of old-style cast" "" }
+  float f = (float)i;  // { dg-warning "use of old-style cast" }
 
   (void)i;
 }
diff --git a/gcc/testsuite/g++.dg/warn/sentinel.C b/gcc/testsuite/g++.dg/warn/sentinel.C
index 5f718f8..7fe81c1 100644
--- a/gcc/testsuite/g++.dg/warn/sentinel.C
+++ b/gcc/testsuite/g++.dg/warn/sentinel.C
@@ -4,8 +4,8 @@ extern void ex (int i, ...) __attribute__ ((__sentinel__(0)));
 
 void f()
 {
-  ex (1, 0);		/* { dg-warning "missing sentinel in function call" "" } */
-  ex (1, 0L);		/* { dg-warning "missing sentinel in function call" "" } */
+  ex (1, 0);		/* { dg-warning "missing sentinel in function call" } */
+  ex (1, 0L);		/* { dg-warning "missing sentinel in function call" } */
   ex (1, (void *)0);
   ex (1, __null);	/* { dg-bogus "sentinel" } */
 }
diff --git a/gcc/testsuite/g++.dg/warn/unit-1.C b/gcc/testsuite/g++.dg/warn/unit-1.C
index 18f5f6b..c7a7129 100644
--- a/gcc/testsuite/g++.dg/warn/unit-1.C
+++ b/gcc/testsuite/g++.dg/warn/unit-1.C
@@ -5,6 +5,6 @@ struct a { int mode; };
 int sys_msgctl (void)
 {
   struct a setbuf;
-  return setbuf.mode;  /* { dg-warning "'setbuf.a::mode' is used" "" } */
+  return setbuf.mode;  /* { dg-warning "'setbuf.a::mode' is used" } */
 }
 
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/inherit2.C b/gcc/testsuite/g++.old-deja/g++.pt/inherit2.C
index f126f6a..1df951a 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/inherit2.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/inherit2.C
@@ -24,8 +24,8 @@ template <class T> class B
   static T value_AC;
 };
 template <typename T> T B<T>::valueA_AA;
-template <typename T> T B<T>::valueA_AC;// { dg-message "" "" } private - 
-template <typename T> T B<T>::value_AC;	// { dg-bogus "" "" }  - 
+template <typename T> T B<T>::valueA_AC;// { dg-message "" } private - 
+template <typename T> T B<T>::value_AC;	// { dg-bogus "" }  - 
 
 // this one is a friend
 template <class T> struct A<T>::AA
@@ -41,7 +41,7 @@ template <class T> struct A<T>::AC
 {
   T M ()
   {
-    return B<T>::valueA_AC;	// { dg-error "" "" } within this context - 
+    return B<T>::valueA_AC;	// { dg-error "" } within this context - 
   }
 };
 
@@ -50,7 +50,7 @@ struct AC
 {
   int M ()
   {
-    return B<int>::value_AC;	// { dg-bogus "" "" }  - 
+    return B<int>::value_AC;	// { dg-bogus "" }  - 
   }
 };
 
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/overload8.C b/gcc/testsuite/g++.old-deja/g++.pt/overload8.C
index 5c2d8bc..87534c1 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/overload8.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/overload8.C
@@ -7,6 +7,6 @@ struct baz;
 void operator*(baz&, double);
 
 template <class T> inline T operator*(double s, const T &p)
-  ; // { dg-bogus "" "" }  - must have argument of class type - 
+  ; // { dg-bogus "" }  - must have argument of class type - 
 
 void m(baz& a) { a * .5; }
diff --git a/gcc/testsuite/gcc.dg/20000926-1.c b/gcc/testsuite/gcc.dg/20000926-1.c
index 2f5ca10..e70596f 100644
--- a/gcc/testsuite/gcc.dg/20000926-1.c
+++ b/gcc/testsuite/gcc.dg/20000926-1.c
@@ -22,6 +22,6 @@ struct PLAYBOOK playbook  =
 {
   "BookName",
   {
-    { 1, "PName0" }, /* { dg-warning "(excess elements)|(near initialization)" "" } */
+    { 1, "PName0" }, /* { dg-warning "(excess elements)|(near initialization)" } */
   }
 };
diff --git a/gcc/testsuite/gcc.dg/20040223-1.c b/gcc/testsuite/gcc.dg/20040223-1.c
index 71ddf09..ae0924e 100644
--- a/gcc/testsuite/gcc.dg/20040223-1.c
+++ b/gcc/testsuite/gcc.dg/20040223-1.c
@@ -7,13 +7,13 @@
 
 int * f( int a)
 {
-	return &a;/* { dg-warning "address" "" } */
+	return &a;/* { dg-warning "address" } */
 }
 
 int * g()
 {
 	int b = 0;
-	return &b;/* { dg-warning "address" "" } */
+	return &b;/* { dg-warning "address" } */
 }
 
 struct ll
@@ -23,7 +23,7 @@ struct ll
 
 int *h(struct ll c)
 {
-  return &c.i;/* { dg-warning "address" "" } */
+  return &c.i;/* { dg-warning "address" } */
 }
 
 
@@ -31,11 +31,11 @@ struct ll d;
 
 int *i()
 {
-  return &d.i;/* { dg-bogus "address" "" } */
+  return &d.i;/* { dg-bogus "address" } */
 }
 
 
 int *j(struct ll *c)
 {
-  return &c->i; /* { dg-bogus "address" "" } */
+  return &c->i; /* { dg-bogus "address" } */
 }
diff --git a/gcc/testsuite/gcc.dg/Warray-bounds-7.c b/gcc/testsuite/gcc.dg/Warray-bounds-7.c
index fdd9578..a32492c 100644
--- a/gcc/testsuite/gcc.dg/Warray-bounds-7.c
+++ b/gcc/testsuite/gcc.dg/Warray-bounds-7.c
@@ -7,7 +7,7 @@ int main()
 {
   p = "";
   if (p[0] == 0
-      || (p[0] == '_' && p[1] == 0))  /* { dg-bogus "array bounds" "" } */
+      || (p[0] == '_' && p[1] == 0))  /* { dg-bogus "array bounds" } */
     return 0;
   return 1;
 }
diff --git a/gcc/testsuite/gcc.dg/alias-1.c b/gcc/testsuite/gcc.dg/alias-1.c
index 388cb3b..17fb1f7 100644
--- a/gcc/testsuite/gcc.dg/alias-1.c
+++ b/gcc/testsuite/gcc.dg/alias-1.c
@@ -19,9 +19,9 @@ YYSTYPE
  addSibMacro(
          YYSTYPE  list )
  {
-     tDefEntry** ppT   = (tDefEntry**)&list; // { dg-warning "type-punned pointer will" "" }
+     tDefEntry** ppT   = (tDefEntry**)&list; // { dg-warning "type-punned pointer will" }
  
-     struct incomplete *p = (struct incomplete *)&list; // { dg-warning "type-punning to incomplete" "" }
+     struct incomplete *p = (struct incomplete *)&list; // { dg-warning "type-punning to incomplete" }
      
      return list;
  }
diff --git a/gcc/testsuite/gcc.dg/alias-12.c b/gcc/testsuite/gcc.dg/alias-12.c
index 721716c..4d69453 100644
--- a/gcc/testsuite/gcc.dg/alias-12.c
+++ b/gcc/testsuite/gcc.dg/alias-12.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-require-alias "" } */
 /* { dg-options "-O2" } */
-static void f (void) __attribute__((alias("f"))); // { dg-error "part of alias cycle" "" }
+static void f (void) __attribute__((alias("f"))); // { dg-error "part of alias cycle" }
 
 void g ()
 {
diff --git a/gcc/testsuite/gcc.dg/alias-13.c b/gcc/testsuite/gcc.dg/alias-13.c
index a8390d4..85e1f87 100644
--- a/gcc/testsuite/gcc.dg/alias-13.c
+++ b/gcc/testsuite/gcc.dg/alias-13.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-require-alias "" } */
 /* { dg-options "-O2" } */
-static void f (void) __attribute__((alias("g"))); static void g (void) __attribute__((alias("f"))); // { dg-error "part of alias cycle" "" }
+static void f (void) __attribute__((alias("g"))); static void g (void) __attribute__((alias("f"))); // { dg-error "part of alias cycle" }
 
 void h ()
 {
diff --git a/gcc/testsuite/gcc.dg/alias-2.c b/gcc/testsuite/gcc.dg/alias-2.c
index f42f22c..ee38406 100644
--- a/gcc/testsuite/gcc.dg/alias-2.c
+++ b/gcc/testsuite/gcc.dg/alias-2.c
@@ -11,6 +11,6 @@ struct foo {
 int
 sub1 (long long int foobar)
 {
-  struct foo *tmp = (struct foo *) &foobar; // { dg-warning "type-punned pointer will" "" }
+  struct foo *tmp = (struct foo *) &foobar; // { dg-warning "type-punned pointer will" }
   return tmp->i;
 }
diff --git a/gcc/testsuite/gcc.dg/array-13.c b/gcc/testsuite/gcc.dg/array-13.c
index 8335b7a..70fd87d 100644
--- a/gcc/testsuite/gcc.dg/array-13.c
+++ b/gcc/testsuite/gcc.dg/array-13.c
@@ -15,7 +15,7 @@ struct g { int w; T0 x; };
 
 static struct f f = { 4, { 0, 1, 2, 3 } };
 static int junk1[] = { -1, -1, -1, -1 };
-static struct g g = { 4, { 0, 1, 2, 3 } }; /* { dg-warning "(excess elements)|(near initialization)" "" } */
+static struct g g = { 4, { 0, 1, 2, 3 } }; /* { dg-warning "(excess elements)|(near initialization)" } */
 static int junk2[] = { -1, -1, -1, -1 };
 
 int main()
diff --git a/gcc/testsuite/gcc.dg/array-4.c b/gcc/testsuite/gcc.dg/array-4.c
index b3e4f6c..c045e79 100644
--- a/gcc/testsuite/gcc.dg/array-4.c
+++ b/gcc/testsuite/gcc.dg/array-4.c
@@ -12,7 +12,7 @@ struct g { int w; int x[0]; };
 
 static struct f f = { 4, { 0, 1, 2, 3 } };
 static int junk1[] = { -1, -1, -1, -1 };
-static struct g g = { 4, { 0, 1, 2, 3 } }; /* { dg-warning "(excess elements)|(near initialization)" "" } */
+static struct g g = { 4, { 0, 1, 2, 3 } }; /* { dg-warning "(excess elements)|(near initialization)" } */
 static int junk2[] = { -1, -1, -1, -1 };
 
 int main()
diff --git a/gcc/testsuite/gcc.dg/attr-ifunc-2.c b/gcc/testsuite/gcc.dg/attr-ifunc-2.c
index f717315..8375af9 100644
--- a/gcc/testsuite/gcc.dg/attr-ifunc-2.c
+++ b/gcc/testsuite/gcc.dg/attr-ifunc-2.c
@@ -7,22 +7,22 @@ static void *resolver ()
 
 extern int magic (void)  /* { dg-message "previous definition" } */
      __attribute__ ((ifunc ("resolver")));
-extern int magic (void)  /* { dg-error "redefinition" "" } */
+extern int magic (void)  /* { dg-error "redefinition" } */
      __attribute__ ((alias ("resolver")));
 
 extern int spell (void)  /* { dg-message "previous definition" } */
 {
   return 0;
 }
-extern int spell (void)  /* { dg-error "redefinition" "" } */
+extern int spell (void)  /* { dg-error "redefinition" } */
      __attribute__ ((ifunc ("resolver")));
 
 extern int mantra (void)  /* { dg-message "previous definition" } */
      __attribute__ ((alias ("resolver")));
-extern int mantra (void)  /* { dg-error "redefinition" "" } */
+extern int mantra (void)  /* { dg-error "redefinition" } */
      __attribute__ ((ifunc ("resolver")));
 
-extern int saying (void)  /* { dg-error "weak .* cannot be defined" "" } */
+extern int saying (void)  /* { dg-error "weak .* cannot be defined" } */
      __attribute__ ((weak,ifunc ("resolver")));
-extern int maxim (void) /* { dg-error "indirect function .* cannot be declared weak" "" } */
+extern int maxim (void) /* { dg-error "indirect function .* cannot be declared weak" } */
      __attribute__ ((ifunc ("resolver"),weak));
diff --git a/gcc/testsuite/gcc.dg/attr-invalid.c b/gcc/testsuite/gcc.dg/attr-invalid.c
index f2a5887..a3315fa 100644
--- a/gcc/testsuite/gcc.dg/attr-invalid.c
+++ b/gcc/testsuite/gcc.dg/attr-invalid.c
@@ -9,25 +9,25 @@
 
 #define AT noinline
 
-typedef int ATSYM(type) ATTR; /* { dg-warning "attribute ignored" "" } */
+typedef int ATSYM(type) ATTR; /* { dg-warning "attribute ignored" } */
 
-typedef int (*ATSYM(fntype))(void) ATTR; /* { dg-warning "attribute ignored" "" } */
+typedef int (*ATSYM(fntype))(void) ATTR; /* { dg-warning "attribute ignored" } */
 
 struct ATSYM(struct) {
-  char dummy ATTR; /* { dg-warning "attribute ignored" "" } */
-} ATTR; /* { dg-warning "does not apply to types" "" } */
+  char dummy ATTR; /* { dg-warning "attribute ignored" } */
+} ATTR; /* { dg-warning "does not apply to types" } */
 
-int ATSYM(var) ATTR;  /* { dg-warning "attribute ignored" "" } */
+int ATSYM(var) ATTR;  /* { dg-warning "attribute ignored" } */
 
 int ATSYM(fn_knrarg) (arg)
-  int arg ATTR; /* { dg-warning "attribute ignored" "" } */
+  int arg ATTR; /* { dg-warning "attribute ignored" } */
 { return 0; }
 
-int ATSYM(fn_isoarg) (int arg ATTR) { return 0; } /* { dg-warning "attribute ignored" "" } */
+int ATSYM(fn_isoarg) (int arg ATTR) { return 0; } /* { dg-warning "attribute ignored" } */
 
 int ATSYM(fn_vars) (void) {
-  static int svar ATTR; /* { dg-warning "attribute ignored" "" } */
-  auto int lvar ATTR; /* { dg-warning "attribute ignored" "" } */
+  static int svar ATTR; /* { dg-warning "attribute ignored" } */
+  auto int lvar ATTR; /* { dg-warning "attribute ignored" } */
   return 0;
 }
 
@@ -42,20 +42,20 @@ typedef int (*ATSYM(fntype))(void) ATTR; /* used attribute is no
 					    longer ignored.  */
 
 struct ATSYM(struct) {
-  char dummy ATTR; /* { dg-warning "attribute ignored" "" } */
-} ATTR; /* { dg-warning "does not apply to types" "" } */
+  char dummy ATTR; /* { dg-warning "attribute ignored" } */
+} ATTR; /* { dg-warning "does not apply to types" } */
 
 int ATSYM(var) ATTR;
 
 int ATSYM(fn_knrarg) (arg)
-  int arg ATTR; /* { dg-warning "attribute ignored" "" } */
+  int arg ATTR; /* { dg-warning "attribute ignored" } */
 { return 0; }
 
-int ATSYM(fn_isoarg) (int arg ATTR) { return 0; } /* { dg-warning "attribute ignored" "" } */
+int ATSYM(fn_isoarg) (int arg ATTR) { return 0; } /* { dg-warning "attribute ignored" } */
 
 int ATSYM(fn_vars) (void) {
   static int svar ATTR;
-  auto int lvar ATTR; /* { dg-warning "attribute ignored" "" } */
+  auto int lvar ATTR; /* { dg-warning "attribute ignored" } */
   return 0;
 }
 
@@ -66,19 +66,19 @@ int ATSYM(fn_vars) (void) {
 #undef AT
 #define AT weak
 
-typedef int ATSYM(type) ATTR; /* { dg-warning "attribute ignored" "" } */
+typedef int ATSYM(type) ATTR; /* { dg-warning "attribute ignored" } */
 
-typedef int (*ATSYM(fntype))(void) ATTR; /* { dg-warning "attribute ignored" "" } */
+typedef int (*ATSYM(fntype))(void) ATTR; /* { dg-warning "attribute ignored" } */
 
 struct ATSYM(struct) {
-  char dummy ATTR; /* { dg-warning "attribute ignored" "" } */
+  char dummy ATTR; /* { dg-warning "attribute ignored" } */
 };
 
 int ATSYM(fn_knrarg) (arg)
-  int arg ATTR; /* { dg-warning "attribute ignored" "" } */
+  int arg ATTR; /* { dg-warning "attribute ignored" } */
 { return 0; }
 
-int ATSYM(fn_isoarg) (int arg ATTR) { return 0; } /* { dg-warning "attribute ignored" "" } */
+int ATSYM(fn_isoarg) (int arg ATTR) { return 0; } /* { dg-warning "attribute ignored" } */
 
 
 /* PR target/28648  */
@@ -87,16 +87,16 @@ int ATSYM(fn_isoarg) (int arg ATTR) { return 0; } /* { dg-warning "attribute ign
 #undef AT
 #define AT dllimport
 
-typedef int ATSYM(type) ATTR;  /* { dg-warning "attribute |directive ignored" "" } */
+typedef int ATSYM(type) ATTR;  /* { dg-warning "attribute |directive ignored" } */
 
-typedef int (*ATSYM(fntype))(void) ATTR;   /* { dg-warning "attribute |directive ignored" "" } */
+typedef int (*ATSYM(fntype))(void) ATTR;   /* { dg-warning "attribute |directive ignored" } */
 
 struct ATSYM(struct) {
-  char dummy ATTR;  /* { dg-warning "attribute |directive ignored" "" } */
+  char dummy ATTR;  /* { dg-warning "attribute |directive ignored" } */
 };
 
 int ATSYM(fn_knrarg) (arg)
-  int arg ATTR;  /* { dg-warning "attribute |directive ignored" "" } */
+  int arg ATTR;  /* { dg-warning "attribute |directive ignored" } */
 { return 0; }
 
-int ATSYM(fn_isoarg) (int arg ATTR) { return 0; }  /* { dg-warning "attribute |directive ignored" "" } */
+int ATSYM(fn_isoarg) (int arg ATTR) { return 0; }  /* { dg-warning "attribute |directive ignored" } */
diff --git a/gcc/testsuite/gcc.dg/attr-noinline.c b/gcc/testsuite/gcc.dg/attr-noinline.c
index a87881b..c2a5b1d 100644
--- a/gcc/testsuite/gcc.dg/attr-noinline.c
+++ b/gcc/testsuite/gcc.dg/attr-noinline.c
@@ -3,45 +3,45 @@
 
 extern int t();
 
-static inline void __attribute__((__noinline__)) function_definition(void) {t();} /* { dg-warning "inline function \[^\n\]* given attribute noinline" "" } */
+static inline void __attribute__((__noinline__)) function_definition(void) {t();} /* { dg-warning "inline function \[^\n\]* given attribute noinline" } */
 
-static inline void __attribute__((__noinline__)) function_declaration_both_before(void); /* { dg-warning "inline function \[^\n\]* given attribute noinline" "" } */
+static inline void __attribute__((__noinline__)) function_declaration_both_before(void); /* { dg-warning "inline function \[^\n\]* given attribute noinline" } */
 
 static void function_declaration_both_before(void) {t();}
 
 static void function_declaration_both_after(void);
 
-static inline void __attribute__((__noinline__)) function_declaration_both_after(void); /* { dg-warning "(inline function \[^\n\]* given attribute noinline|declared inline after its definition)" "" } */
+static inline void __attribute__((__noinline__)) function_declaration_both_after(void); /* { dg-warning "(inline function \[^\n\]* given attribute noinline|declared inline after its definition)" } */
 
 static void function_declaration_both_after(void) {t();}
 
-static void function_declaration_noinline_before(void) __attribute__((__noinline__)); /* { dg-message "note: previous declaration" "" } */
+static void function_declaration_noinline_before(void) __attribute__((__noinline__)); /* { dg-message "note: previous declaration" } */
 
-static inline void function_declaration_noinline_before(void) {t();} /* { dg-warning "follows declaration with attribute noinline" "" } */
+static inline void function_declaration_noinline_before(void) {t();} /* { dg-warning "follows declaration with attribute noinline" } */
 
-static inline void function_declaration_noinline_after(void) {t();} /* { dg-message "note: previous definition" "" } */
+static inline void function_declaration_noinline_after(void) {t();} /* { dg-message "note: previous definition" } */
 
-static void function_declaration_noinline_after(void) __attribute__((__noinline__)); /* { dg-warning "follows inline declaration" "" } */
+static void function_declaration_noinline_after(void) __attribute__((__noinline__)); /* { dg-warning "follows inline declaration" } */
 
-static inline void function_declaration_inline_before(void); /* { dg-message "note: previous declaration" "" } */
+static inline void function_declaration_inline_before(void); /* { dg-message "note: previous declaration" } */
 
-static void __attribute__((__noinline__)) function_declaration_inline_before(void) {t();} /* { dg-warning "follows inline declaration" "" } */
+static void __attribute__((__noinline__)) function_declaration_inline_before(void) {t();} /* { dg-warning "follows inline declaration" } */
 
-static inline void function_declaration_inline_noinline_before(void); /* { dg-message "note: previous declaration" "" } */
+static inline void function_declaration_inline_noinline_before(void); /* { dg-message "note: previous declaration" } */
 
-static void function_declaration_inline_noinline_before(void) __attribute__((__noinline__)); /* { dg-warning "follows inline declaration" "" } */
+static void function_declaration_inline_noinline_before(void) __attribute__((__noinline__)); /* { dg-warning "follows inline declaration" } */
 
 static void function_declaration_inline_noinline_before(void) {t();}
 
 static inline void function_declaration_inline_noinline_after(void);
 
-static void function_declaration_inline_noinline_after(void) {t();} /* { dg-message "note: previous definition" "" } */
+static void function_declaration_inline_noinline_after(void) {t();} /* { dg-message "note: previous definition" } */
 
-static void function_declaration_inline_noinline_after(void) __attribute__((__noinline__)); /* { dg-warning "follows inline declaration" "" } */
+static void function_declaration_inline_noinline_after(void) __attribute__((__noinline__)); /* { dg-warning "follows inline declaration" } */
 
-static void function_declaration_noinline_inline_before(void) __attribute__((__noinline__)); /* { dg-message "note: previous declaration" "" } */
+static void function_declaration_noinline_inline_before(void) __attribute__((__noinline__)); /* { dg-message "note: previous declaration" } */
 
-static inline void function_declaration_noinline_inline_before(void); /* { dg-warning "follows declaration with attribute noinline" "" } */
+static inline void function_declaration_noinline_inline_before(void); /* { dg-warning "follows declaration with attribute noinline" } */
 
 static void function_declaration_noinline_inline_before(void) {t();}
 
diff --git a/gcc/testsuite/gcc.dg/bitfld-2.c b/gcc/testsuite/gcc.dg/bitfld-2.c
index b61fec6..e3f5f1b 100644
--- a/gcc/testsuite/gcc.dg/bitfld-2.c
+++ b/gcc/testsuite/gcc.dg/bitfld-2.c
@@ -11,13 +11,13 @@ struct bf
   int b: 2;
 };
 
-struct bf p = {4, 0};		/* { dg-warning "truncated" "" } */
-struct bf q = {0, 2};		/* { dg-warning "overflow" "" } */
+struct bf p = {4, 0};		/* { dg-warning "truncated" } */
+struct bf q = {0, 2};		/* { dg-warning "overflow" } */
 struct bf r = {3, -2};		/* { dg-bogus "(truncated|overflow)" } */
 
 void foo ()
 {
-  p.a = 4, p.b = 0;		/* { dg-warning "truncated" "" } */
-  q.a = 0, q.b = 2;		/* { dg-warning "overflow" "" } */
+  p.a = 4, p.b = 0;		/* { dg-warning "truncated" } */
+  q.a = 0, q.b = 2;		/* { dg-warning "overflow" } */
   r.a = 3, r.b = -2;		/* { dg-bogus "(truncated|overflow)" } */
 }
diff --git a/gcc/testsuite/gcc.dg/c90-const-expr-7.c b/gcc/testsuite/gcc.dg/c90-const-expr-7.c
index 7a91205..56a1478 100644
--- a/gcc/testsuite/gcc.dg/c90-const-expr-7.c
+++ b/gcc/testsuite/gcc.dg/c90-const-expr-7.c
@@ -8,7 +8,7 @@
 
 int a = DBL_MAX; /* { dg-warning "overflow in implicit constant conversion" } */
 /* { dg-error "overflow in constant expression" "constant" { target *-*-* } .-1 } */
-int b = (int) DBL_MAX; /* { dg-error "overflow" "" } */
+int b = (int) DBL_MAX; /* { dg-error "overflow" } */
 unsigned int c = -1.0; /* { dg-warning "overflow in implicit constant conversion" } */
 /* { dg-error "overflow in constant expression" "constant" { target *-*-* } .-1 } */
 unsigned int d = (unsigned)-1.0; /* { dg-error "overflow" } */
diff --git a/gcc/testsuite/gcc.dg/c99-const-expr-7.c b/gcc/testsuite/gcc.dg/c99-const-expr-7.c
index 9be138d..c663723 100644
--- a/gcc/testsuite/gcc.dg/c99-const-expr-7.c
+++ b/gcc/testsuite/gcc.dg/c99-const-expr-7.c
@@ -9,7 +9,7 @@
 
 int a = DBL_MAX; /* { dg-warning "overflow in implicit constant conversion" } */
 /* { dg-error "overflow in constant expression" "constant" { target *-*-* } .-1 } */
-int b = (int) DBL_MAX; /* { dg-error "overflow" "" } */
+int b = (int) DBL_MAX; /* { dg-error "overflow" } */
 unsigned int c = -1.0; /* { dg-warning "overflow in implicit constant conversion" } */
 /* { dg-error "overflow in constant expression" "constant" { target *-*-* } .-1 } */
 unsigned int d = (unsigned)-1.0; /* { dg-error "overflow" } */
diff --git a/gcc/testsuite/gcc.dg/cpp/20000625-1.c b/gcc/testsuite/gcc.dg/cpp/20000625-1.c
index 01ce98b..a77aa8c 100644
--- a/gcc/testsuite/gcc.dg/cpp/20000625-1.c
+++ b/gcc/testsuite/gcc.dg/cpp/20000625-1.c
@@ -12,6 +12,6 @@ main(void)
 {
   goto socket;
 
-  ENTRY(socket) /* { dg-error "valid preprocessing token" "" } */
+  ENTRY(socket) /* { dg-error "valid preprocessing token" } */
     return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/cpp/charconst-4.c b/gcc/testsuite/gcc.dg/cpp/charconst-4.c
index aae33d3..9ea5e8a 100644
--- a/gcc/testsuite/gcc.dg/cpp/charconst-4.c
+++ b/gcc/testsuite/gcc.dg/cpp/charconst-4.c
@@ -38,7 +38,7 @@ extern void abort (void);
 # error Charconst incorrectly sign-extended
 #endif
 
-#if LONG_CHARCONST != SHORT_CHARCONST /* { dg-warning "too long" "" } */
+#if LONG_CHARCONST != SHORT_CHARCONST /* { dg-warning "too long" } */
 # error Overly long charconst truncates wrongly for preprocessor
 #endif
 
@@ -46,7 +46,7 @@ int main ()
 {
   if (POS_CHARCONST < 0)
     abort ();
-  if (LONG_CHARCONST != SHORT_CHARCONST)  /* { dg-warning "too long" "" } */
+  if (LONG_CHARCONST != SHORT_CHARCONST)  /* { dg-warning "too long" } */
     abort ();
   return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/cpp/include2.c b/gcc/testsuite/gcc.dg/cpp/include2.c
index de34255..00aad0c 100644
--- a/gcc/testsuite/gcc.dg/cpp/include2.c
+++ b/gcc/testsuite/gcc.dg/cpp/include2.c
@@ -7,7 +7,7 @@
 
 /* Source: Neil Booth, 4 Nov 2000.  */
 
-#include <silly\>>  /* { dg-error "extra tokens" "" } */
+#include <silly\>>  /* { dg-error "extra tokens" } */
 
 /* These error is No such file or directory, just once.  However, this
    message is locale-dependent, so don't test for it.  */
diff --git a/gcc/testsuite/gcc.dg/cpp/include2a.c b/gcc/testsuite/gcc.dg/cpp/include2a.c
index 9370d09..4504d95 100644
--- a/gcc/testsuite/gcc.dg/cpp/include2a.c
+++ b/gcc/testsuite/gcc.dg/cpp/include2a.c
@@ -7,7 +7,7 @@
 
 /* Source: Neil Booth, 4 Nov 2000.  */
 
-#include "silly\""  /* { dg-error "extra tokens" "" } */
+#include "silly\""  /* { dg-error "extra tokens" } */
 
 /* These error is No such file or directory, just once.  However, this
    message is locale-dependent, so don't test for it.  */
diff --git a/gcc/testsuite/gcc.dg/decl-4.c b/gcc/testsuite/gcc.dg/decl-4.c
index ce640c9..80566f7 100644
--- a/gcc/testsuite/gcc.dg/decl-4.c
+++ b/gcc/testsuite/gcc.dg/decl-4.c
@@ -1,10 +1,10 @@
 /* Redeclaration of parameters is an error.  PR 13728.  */
 /* { dg-do compile } */
 
-void f (int fred,	/* { dg-message "note: previous definition" "" } */
-	int fred);	/* { dg-error "redefinition of parameter" "" } */
+void f (int fred,	/* { dg-message "note: previous definition" } */
+	int fred);	/* { dg-error "redefinition of parameter" } */
 
-void f2 (int fred,	/* { dg-message "note: previous definition" "" } */
-	 int fred)	/* { dg-error "redefinition of parameter" "" } */
+void f2 (int fred,	/* { dg-message "note: previous definition" } */
+	 int fred)	/* { dg-error "redefinition of parameter" } */
 {
 }
diff --git a/gcc/testsuite/gcc.dg/deprecated-4.c b/gcc/testsuite/gcc.dg/deprecated-4.c
index b55c134..e8f0817 100644
--- a/gcc/testsuite/gcc.dg/deprecated-4.c
+++ b/gcc/testsuite/gcc.dg/deprecated-4.c
@@ -5,26 +5,26 @@
 typedef int INT1 __attribute__((deprecated("Please avoid INT1")));
 typedef INT1 INT2 __attribute__ ((__deprecated__("Please avoid INT2")));
 
-typedef INT1 INT1a; 			/* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
+typedef INT1 INT1a; 			/* { dg-warning "'INT1' is deprecated: Please avoid INT1" } */
 typedef INT1 INT1b __attribute__ ((deprecated("Please avoid INT1b")));
 
-INT1 should_be_unavailable; 		/* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
+INT1 should_be_unavailable; 		/* { dg-warning "'INT1' is deprecated: Please avoid INT1" } */
 INT1a should_not_be_deprecated;
 
 INT1 f1(void) __attribute__ ((deprecated("Please avoid f1"))); 
-INT1 f2(void) { return 0; }		/* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
+INT1 f2(void) { return 0; }		/* { dg-warning "'INT1' is deprecated: Please avoid INT1" } */
 
 INT2 f3(void) __attribute__ ((__deprecated__("Please avoid f3"))); 
-INT2 f4(void) { return 0; }		/* { dg-warning "'INT2' is deprecated: Please avoid INT2" "" } */
-int f5(INT2 x);				/* { dg-warning "'INT2' is deprecated: Please avoid INT2" "" } */
-int f6(INT2 x) __attribute__ ((__deprecated__("Please avoid f6"))); /* { dg-warning "'INT2' is deprecated: Please avoid INT2" "" } */
+INT2 f4(void) { return 0; }		/* { dg-warning "'INT2' is deprecated: Please avoid INT2" } */
+int f5(INT2 x);				/* { dg-warning "'INT2' is deprecated: Please avoid INT2" } */
+int f6(INT2 x) __attribute__ ((__deprecated__("Please avoid f6"))); /* { dg-warning "'INT2' is deprecated: Please avoid INT2" } */
 
 typedef enum {red, green, blue} Color __attribute__((deprecated("Please avoid Color")));
 
 int g1;
 int g2 __attribute__ ((deprecated("Please avoid g2")));
 int g3 __attribute__ ((__deprecated__("Please avoid g3")));
-Color k;				/* { dg-warning "'Color' is deprecated: Please avoid Color" "" } */
+Color k;				/* { dg-warning "'Color' is deprecated: Please avoid Color" } */
 
 typedef struct {
   int field1;
@@ -45,17 +45,17 @@ typedef struct {
 
 int func1()
 {
-   INT1 w;				/* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
+   INT1 w;				/* { dg-warning "'INT1' is deprecated: Please avoid INT1" } */
    int x __attribute__ ((deprecated("Avoid x")));
    int y __attribute__ ((__deprecated__("Bad y")));
    int z;
-   int (*pf)() = f1;			/* { dg-warning "'f1' is deprecated: Please avoid f1" "" } */
+   int (*pf)() = f1;			/* { dg-warning "'f1' is deprecated: Please avoid f1" } */
 
-   z = w + x + y + g1 + g2 + g3;	/* { dg-warning "'x' is deprecated: Avoid x" "" } */
+   z = w + x + y + g1 + g2 + g3;	/* { dg-warning "'x' is deprecated: Avoid x" } */
 					/* { dg-warning "'y' is deprecated: Bad y" "y" { target *-*-* } .-1 } */
 					/* { dg-warning "'g2' is deprecated: Please avoid g2" "g2" { target *-*-* } .-2 }  */
 					/* { dg-warning "'g3' is deprecated: Please avoid g3" "g3" { target *-*-* } .-3 } */
-   return f1(); 			/* { dg-warning "'f1' is deprecated: Please avoid f1" "" } */
+   return f1(); 			/* { dg-warning "'f1' is deprecated: Please avoid f1" } */
 }
 
 int func2(S1 *p)
@@ -63,26 +63,26 @@ int func2(S1 *p)
   S1 lp;
   
   if (p->field1)
-     return p->field2;			/* { dg-warning "'field2' is deprecated: Please avoid field2" "" } */
-  else if (lp.field4)			/* { dg-warning "'field4' is deprecated: Please avoid field4" "" } */
+     return p->field2;			/* { dg-warning "'field2' is deprecated: Please avoid field2" } */
+  else if (lp.field4)			/* { dg-warning "'field4' is deprecated: Please avoid field4" } */
      return p->field3;
   
   p->u1.field5 = g1 + p->field7;
-  p->u2.field9;				/* { dg-warning "'u2' is deprecated: Please avoid u2" "" } */
-  return p->u1.field6 + p->field8;	/* { dg-warning "'field6' is deprecated: Please avoid field6" "" } */
+  p->u2.field9;				/* { dg-warning "'u2' is deprecated: Please avoid u2" } */
+  return p->u1.field6 + p->field8;	/* { dg-warning "'field6' is deprecated: Please avoid field6" } */
 					/* { dg-warning "'field8' is deprecated: Please avoid field8" "field8" { target *-*-* } .-1 } */
 }
 
 struct SS1 {
   int x;
-  INT1 y; 				/* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
+  INT1 y; 				/* { dg-warning "'INT1' is deprecated: Please avoid INT1" } */
 } __attribute__ ((deprecated("Please avoid SS1")));
 
-struct SS1 *p1;				/* { dg-warning "'SS1' is deprecated: Please avoid SS1" "" } */
+struct SS1 *p1;				/* { dg-warning "'SS1' is deprecated: Please avoid SS1" } */
 
 struct __attribute__ ((__deprecated__("Please avoid SS2"))) SS2 {
   int x;
-  INT1 y; 				/* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
+  INT1 y; 				/* { dg-warning "'INT1' is deprecated: Please avoid INT1" } */
 };
 
-struct SS2 *p2;				/* { dg-warning "'SS2' is deprecated: Please avoid SS2" "" } */
+struct SS2 *p2;				/* { dg-warning "'SS2' is deprecated: Please avoid SS2" } */
diff --git a/gcc/testsuite/gcc.dg/deprecated.c b/gcc/testsuite/gcc.dg/deprecated.c
index 8b4a70f..7579378 100644
--- a/gcc/testsuite/gcc.dg/deprecated.c
+++ b/gcc/testsuite/gcc.dg/deprecated.c
@@ -6,26 +6,26 @@
 typedef int INT1 __attribute__((deprecated));
 typedef INT1 INT2 __attribute__ ((__deprecated__));
 
-typedef INT1 INT1a; 			/* { dg-warning "'INT1' is deprecated" "" } */
+typedef INT1 INT1a; 			/* { dg-warning "'INT1' is deprecated" } */
 typedef INT1 INT1b __attribute__ ((deprecated));
 
-INT1 should_be_unavailable; 		/* { dg-warning "'INT1' is deprecated" "" } */
+INT1 should_be_unavailable; 		/* { dg-warning "'INT1' is deprecated" } */
 INT1a should_not_be_deprecated;
 
 INT1 f1(void) __attribute__ ((deprecated)); 
-INT1 f2(void) { return 0; }		/* { dg-warning "'INT1' is deprecated" "" } */
+INT1 f2(void) { return 0; }		/* { dg-warning "'INT1' is deprecated" } */
 
 INT2 f3(void) __attribute__ ((__deprecated__)); 
-INT2 f4(void) { return 0; }		/* { dg-warning "'INT2' is deprecated" "" } */
-int f5(INT2 x);				/* { dg-warning "'INT2' is deprecated" "" } */
-int f6(INT2 x) __attribute__ ((__deprecated__)); /* { dg-warning "'INT2' is deprecated" "" } */
+INT2 f4(void) { return 0; }		/* { dg-warning "'INT2' is deprecated" } */
+int f5(INT2 x);				/* { dg-warning "'INT2' is deprecated" } */
+int f6(INT2 x) __attribute__ ((__deprecated__)); /* { dg-warning "'INT2' is deprecated" } */
 
 typedef enum {red, green, blue} Color __attribute__((deprecated));
 
 int g1;
 int g2 __attribute__ ((deprecated));
 int g3 __attribute__ ((__deprecated__));
-Color k;				/* { dg-warning "'Color' is deprecated" "" } */
+Color k;				/* { dg-warning "'Color' is deprecated" } */
 
 typedef struct {
   int field1;
@@ -46,13 +46,13 @@ typedef struct {
 
 int func1()
 {
-   INT1 w;				/* { dg-warning "'INT1' is deprecated" "" } */
+   INT1 w;				/* { dg-warning "'INT1' is deprecated" } */
    int x __attribute__ ((deprecated));
    int y __attribute__ ((__deprecated__));
    int z;
-   int (*pf)() = f1;			/* { dg-warning "'f1' is deprecated" "" } */
+   int (*pf)() = f1;			/* { dg-warning "'f1' is deprecated" } */
 
-   z = w + x + y + g1 + g2 + g3;	/* { dg-warning "'x' is deprecated" "" } */
+   z = w + x + y + g1 + g2 + g3;	/* { dg-warning "'x' is deprecated" } */
    					/* { dg-warning "'y' is deprecated" "y" { target *-*-* } .-1 } */
    					/* { dg-warning "'g2' is deprecated" "g2" { target *-*-* } .-2 } */
    					/* { dg-warning "'g3' is deprecated" "g3" { target *-*-* } .-3 } */
@@ -64,29 +64,29 @@ int func2(S1 *p)
   S1 lp;
   
   if (p->field1)
-     return p->field2;			/* { dg-warning "'field2' is deprecated" "" } */
-  else if (lp.field4)			/* { dg-warning "'field4' is deprecated" "" } */
+     return p->field2;			/* { dg-warning "'field2' is deprecated" } */
+  else if (lp.field4)			/* { dg-warning "'field4' is deprecated" } */
      return p->field3;
   
   p->u1.field5 = g1 + p->field7;
-  p->u2.field9;				/* { dg-warning "'u2' is deprecated" "" } */
-  return p->u1.field6 + p->field8;	/* { dg-warning "'field6' is deprecated" "" } */
+  p->u2.field9;				/* { dg-warning "'u2' is deprecated" } */
+  return p->u1.field6 + p->field8;	/* { dg-warning "'field6' is deprecated" } */
   					/* { dg-warning "'field8' is deprecated" "field8" { target *-*-* } .-1 } */
 }
 
 struct SS1 {
   int x;
-  INT1 y; 				/* { dg-warning "'INT1' is deprecated" "" } */
+  INT1 y; 				/* { dg-warning "'INT1' is deprecated" } */
 } __attribute__ ((deprecated));
 
-struct SS1 *p1;				/* { dg-warning "'SS1' is deprecated" "" } */
+struct SS1 *p1;				/* { dg-warning "'SS1' is deprecated" } */
 
 struct __attribute__ ((__deprecated__)) SS2 {
   int x;
-  INT1 y; 				/* { dg-warning "'INT1' is deprecated" "" } */
+  INT1 y; 				/* { dg-warning "'INT1' is deprecated" } */
 };
 
-struct SS2 *p2;				/* { dg-warning "'SS2' is deprecated" "" } */
+struct SS2 *p2;				/* { dg-warning "'SS2' is deprecated" } */
 #endif
 
 #ifdef __cplusplus
@@ -104,13 +104,13 @@ inline void T::member1(int) {}
 
 int T::member2(T *p)
 {
-  p->member1(1);			/* { xxdg-warning "'member1' is deprecated" "" } */
-  (*p).member1(2);			/* { xxdg-warning "'member1' is deprecated" "" } */
-  p->member2(1);			/* { xxdg-warning "'member2' is deprecated" "" } */
-  (*p).member2(2);			/* { xxdg-warning "'member2' is deprecated" "" } */
+  p->member1(1);			/* { xxdg-warning "'member1' is deprecated" } */
+  (*p).member1(2);			/* { xxdg-warning "'member1' is deprecated" } */
+  p->member2(1);			/* { xxdg-warning "'member2' is deprecated" } */
+  (*p).member2(2);			/* { xxdg-warning "'member2' is deprecated" } */
   p->member3(p);
   (*p).member3(p);
-  return f1(); 				/* { xxdg-warning "'f1' is deprecated" "" } */
+  return f1(); 				/* { xxdg-warning "'f1' is deprecated" } */
 }
 #endif
 
diff --git a/gcc/testsuite/gcc.dg/dfp/altivec-types.c b/gcc/testsuite/gcc.dg/dfp/altivec-types.c
index e11ddc5..6663a8f 100644
--- a/gcc/testsuite/gcc.dg/dfp/altivec-types.c
+++ b/gcc/testsuite/gcc.dg/dfp/altivec-types.c
@@ -4,6 +4,6 @@
 /* GNU extension: PowerPC AltiVec Built-in Functions.
    These should be rejected as invalid AltiVec types.  */
 
-__vector _Decimal32 vd32;		/* { dg-error "AltiVec types" "" } */
-__vector _Decimal64 vd64;		/* { dg-error "AltiVec types" "" } */
-__vector _Decimal128 vd128;		/* { dg-error "AltiVec types" "" } */
+__vector _Decimal32 vd32;		/* { dg-error "AltiVec types" } */
+__vector _Decimal64 vd64;		/* { dg-error "AltiVec types" } */
+__vector _Decimal128 vd128;		/* { dg-error "AltiVec types" } */
diff --git a/gcc/testsuite/gcc.dg/float-range-1.c b/gcc/testsuite/gcc.dg/float-range-1.c
index ddd7fd6..9185b22 100644
--- a/gcc/testsuite/gcc.dg/float-range-1.c
+++ b/gcc/testsuite/gcc.dg/float-range-1.c
@@ -9,7 +9,7 @@
 void
 f (void)
 {
-  float a = 1e+100000000f; /* { dg-warning "floating constant exceeds range of 'float'" "" } */
+  float a = 1e+100000000f; /* { dg-warning "floating constant exceeds range of 'float'" } */
   double b = 1e+100000000; /* { dg-warning "floating constant exceeds range of 'double'" } */
   long double c = 1e+100000000l; /* { dg-warning "floating constant exceeds range of 'long double'" } */
 }
diff --git a/gcc/testsuite/gcc.dg/pack-test-3.c b/gcc/testsuite/gcc.dg/pack-test-3.c
index 8b03903..bd78fad 100644
--- a/gcc/testsuite/gcc.dg/pack-test-3.c
+++ b/gcc/testsuite/gcc.dg/pack-test-3.c
@@ -33,12 +33,12 @@ int ary2[sizeof (struct p2) == sizeof (p2_t1) ? 1 : -1];
 int ary3[sizeof (struct p1) == sizeof (struct p2) ? 1 : -1];
 
 /* not ok */
-typedef struct u1 __attribute__ ((packed)) u1_t1; /* { dg-warning "attribute ignored" "" }*/
-typedef struct u1 u1_t2 __attribute__ ((packed)); /* { dg-warning "attribute ignored" "" }*/
+typedef struct u1 __attribute__ ((packed)) u1_t1; /* { dg-warning "attribute ignored" }*/
+typedef struct u1 u1_t2 __attribute__ ((packed)); /* { dg-warning "attribute ignored" }*/
 
 typedef struct p3 {
    char  field1;
    short field2;
    int field3;
-} p3_t1 __attribute__ ((packed)); /* { dg-warning "attribute ignored" "" }*/
+} p3_t1 __attribute__ ((packed)); /* { dg-warning "attribute ignored" }*/
 
diff --git a/gcc/testsuite/gcc.dg/pr11492.c b/gcc/testsuite/gcc.dg/pr11492.c
index 8663099..cf17712 100644
--- a/gcc/testsuite/gcc.dg/pr11492.c
+++ b/gcc/testsuite/gcc.dg/pr11492.c
@@ -5,7 +5,7 @@ int main( void )
 {
   unsigned int a;
   unsigned char b;
-  for ( a = 0, b = 2; a > b * 100; a++ ) /* { dg-bogus "comparison between signed and unsigned integer" "" } */
+  for ( a = 0, b = 2; a > b * 100; a++ ) /* { dg-bogus "comparison between signed and unsigned integer" } */
     { ; }
 
   return 0;
diff --git a/gcc/testsuite/gcc.dg/pr15360-1.c b/gcc/testsuite/gcc.dg/pr15360-1.c
index 4f900d7..f5f8ad5 100644
--- a/gcc/testsuite/gcc.dg/pr15360-1.c
+++ b/gcc/testsuite/gcc.dg/pr15360-1.c
@@ -15,10 +15,10 @@ extern int b = 1; /* { dg-warning "initialized and declared" "extern init warnin
 static int b;
 static int b;
 
-static int c; /* { dg-message "note: previous declaration" "" } */
+static int c; /* { dg-message "note: previous declaration" } */
 int c; /* { dg-error "non-static" "correct error" } */
 
-static int d; /* { dg-message "note: previous declaration" "" } */
+static int d; /* { dg-message "note: previous declaration" } */
 int d = 1; /* { dg-error "non-static" "correct error" } */
 
 void foo (void) { extern int e = 1; } /* { dg-error "has both" "extern init in function" } */
diff --git a/gcc/testsuite/gcc.dg/pr37908.c b/gcc/testsuite/gcc.dg/pr37908.c
index 32946d1..e1457fa 100644
--- a/gcc/testsuite/gcc.dg/pr37908.c
+++ b/gcc/testsuite/gcc.dg/pr37908.c
@@ -16,7 +16,7 @@ int main (void)
   xLoc = xIn = ~ (1 << i);
   xExpect = ~ (xIn & 0x7F);
 
-  xOut = __sync_nand_and_fetch (&xLoc, 0x7F); /* { dg-message "note: '__sync_nand_and_fetch' changed semantics in GCC 4.4" "" } */
+  xOut = __sync_nand_and_fetch (&xLoc, 0x7F); /* { dg-message "note: '__sync_nand_and_fetch' changed semantics in GCC 4.4" } */
 
   if (xOut != xExpect)
     abort ();
diff --git a/gcc/testsuite/gcc.dg/pr53265.c b/gcc/testsuite/gcc.dg/pr53265.c
index d3ab6aa..ea39d69 100644
--- a/gcc/testsuite/gcc.dg/pr53265.c
+++ b/gcc/testsuite/gcc.dg/pr53265.c
@@ -50,9 +50,9 @@ fn4 (void)
   unsigned int *a[32], *o, i;
 
   bar (a);
-  for (i = 0; i <= sizeof (a) / sizeof (a[0]); i++)	/* { dg-message "note: within this loop" "" } */
+  for (i = 0; i <= sizeof (a) / sizeof (a[0]); i++)	/* { dg-message "note: within this loop" } */
     {
-      o = a[i];	/* { dg-warning "32 invokes undefined behavior" "" } */
+      o = a[i];	/* { dg-warning "32 invokes undefined behavior" } */
       bar (o);
     }
 }
@@ -86,7 +86,7 @@ fn7 (void)
 {
   int a[16], b, c;
   bar (a);
-  for (b = a[c = 0]; c < 16; b = a[++c])	/* { dg-warning "15 invokes undefined behavior" "" } */
+  for (b = a[c = 0]; c < 16; b = a[++c])	/* { dg-warning "15 invokes undefined behavior" } */
     baz (b);
 }
 
diff --git a/gcc/testsuite/gcc.dg/pr57287-2.c b/gcc/testsuite/gcc.dg/pr57287-2.c
index 7d13464..b41ae64 100644
--- a/gcc/testsuite/gcc.dg/pr57287-2.c
+++ b/gcc/testsuite/gcc.dg/pr57287-2.c
@@ -26,7 +26,7 @@ int baz (void)
       if (!varseen)
 	varseen = 1;
 
-      jmp_buf *buf = bar ();  /* { dg-bogus "may be used uninitialized" "" } */
+      jmp_buf *buf = bar ();  /* { dg-bogus "may be used uninitialized" } */
       setjmp (*buf);
     }
 
diff --git a/gcc/testsuite/gcc.dg/pr57287.c b/gcc/testsuite/gcc.dg/pr57287.c
index 7ca0f8b..47ed5b7 100644
--- a/gcc/testsuite/gcc.dg/pr57287.c
+++ b/gcc/testsuite/gcc.dg/pr57287.c
@@ -18,7 +18,7 @@ void enumerate_locals (int indent)
       if (local_indent != 8)
 	{
 	  setjmp (buf);
-	  bar (local_indent);  /* { dg-bogus "may be used uninitialized" "" } */
+	  bar (local_indent);  /* { dg-bogus "may be used uninitialized" } */
 	}
     }
   foo (1);
diff --git a/gcc/testsuite/gcc.dg/redecl-1.c b/gcc/testsuite/gcc.dg/redecl-1.c
index ff18739..1fb0070 100644
--- a/gcc/testsuite/gcc.dg/redecl-1.c
+++ b/gcc/testsuite/gcc.dg/redecl-1.c
@@ -75,7 +75,7 @@ void test5(void)
 
 /* Extern then static, both at file scope.  */
 
-extern int test6(int);		/* { dg-message "note: previous" "" } */
+extern int test6(int);		/* { dg-message "note: previous" } */
 static int test6(int x)		/* { dg-error "follows non-static" } */
 { return x; }
 
@@ -84,7 +84,7 @@ static int test6(int x)		/* { dg-error "follows non-static" } */
 
 void prime7(void)
 {
-  extern int test7(int);	/* { dg-message "note: previous" "" } */
+  extern int test7(int);	/* { dg-message "note: previous" } */
 }
 
 static int test7(int x)		/* { dg-error "follows non-static" } */
@@ -94,7 +94,7 @@ static int test7(int x)		/* { dg-error "follows non-static" } */
 
 void prime8(void)
 {
-  test8();			/* { dg-message "note: previous" "" } */
+  test8();			/* { dg-message "note: previous" } */
                                 /* { dg-warning "implicit" "implicit" { target *-*-* } .-1 } */
 }
 
diff --git a/gcc/testsuite/gcc.dg/sync-3.c b/gcc/testsuite/gcc.dg/sync-3.c
index 2960287..93e79d0 100644
--- a/gcc/testsuite/gcc.dg/sync-3.c
+++ b/gcc/testsuite/gcc.dg/sync-3.c
@@ -31,7 +31,7 @@ do_qi (void)
     abort ();
   if (__sync_fetch_and_xor(AI+10, 9) != 0)
     abort ();
-  if (__sync_fetch_and_nand(AI+11, 7) != (char)-1) /* { dg-message "note: '__sync_fetch_and_nand' changed semantics in GCC 4.4" "" } */
+  if (__sync_fetch_and_nand(AI+11, 7) != (char)-1) /* { dg-message "note: '__sync_fetch_and_nand' changed semantics in GCC 4.4" } */
     abort ();
 
   if (__sync_add_and_fetch(AI+12, 1) != 1)
@@ -44,7 +44,7 @@ do_qi (void)
     abort ();
   if (__sync_xor_and_fetch(AI+16, 9) != 9)
     abort ();
-  if (__sync_nand_and_fetch(AI+17, 7) != (char)~7) /* { dg-message "note: '__sync_nand_and_fetch' changed semantics in GCC 4.4" "" } */
+  if (__sync_nand_and_fetch(AI+17, 7) != (char)~7) /* { dg-message "note: '__sync_nand_and_fetch' changed semantics in GCC 4.4" } */
     abort ();
 }
 
diff --git a/gcc/testsuite/gcc.dg/two-types-1.c b/gcc/testsuite/gcc.dg/two-types-1.c
index f6160aa..43d236b 100644
--- a/gcc/testsuite/gcc.dg/two-types-1.c
+++ b/gcc/testsuite/gcc.dg/two-types-1.c
@@ -2,4 +2,4 @@
 /* { dg-options "-std=gnu89" } // suppress default -pedantic-errors */
 
 typedef int x, y;
-x y z;			/* { dg-error "" "" } */
+x y z;			/* { dg-error "" } */
diff --git a/gcc/testsuite/gcc.dg/two-types-2.c b/gcc/testsuite/gcc.dg/two-types-2.c
index 30fcabc..0fffae5 100644
--- a/gcc/testsuite/gcc.dg/two-types-2.c
+++ b/gcc/testsuite/gcc.dg/two-types-2.c
@@ -2,4 +2,4 @@
 /* { dg-options "-std=gnu89" } // suppress default -pedantic-errors */
 
 typedef int x, y;
-x struct f z; /* { dg-error "two or more " "" } */
+x struct f z; /* { dg-error "two or more " } */
diff --git a/gcc/testsuite/gcc.dg/two-types-4.c b/gcc/testsuite/gcc.dg/two-types-4.c
index 1ec734f..5ffb153 100644
--- a/gcc/testsuite/gcc.dg/two-types-4.c
+++ b/gcc/testsuite/gcc.dg/two-types-4.c
@@ -5,5 +5,5 @@ int f()
 {
   struct f {
   }
-  int z; /* { dg-error "expected ';', identifier or " "" } */
+  int z; /* { dg-error "expected ';', identifier or " } */
 }
diff --git a/gcc/testsuite/gcc.dg/two-types-5.c b/gcc/testsuite/gcc.dg/two-types-5.c
index a127388..9b5ca8f 100644
--- a/gcc/testsuite/gcc.dg/two-types-5.c
+++ b/gcc/testsuite/gcc.dg/two-types-5.c
@@ -2,5 +2,5 @@
 /* { dg-options "-std=gnu89" } // suppress default -pedantic-errors */
 
 struct f {}
-struct g {} /* { dg-error "expected ';', identifier or " "" } */
-int f(); /* { dg-error "expected ';', identifier or " "" } */
+struct g {} /* { dg-error "expected ';', identifier or " } */
+int f(); /* { dg-error "expected ';', identifier or " } */
diff --git a/gcc/testsuite/gcc.dg/two-types-6.c b/gcc/testsuite/gcc.dg/two-types-6.c
index 1c55549..ca3bfa9 100644
--- a/gcc/testsuite/gcc.dg/two-types-6.c
+++ b/gcc/testsuite/gcc.dg/two-types-6.c
@@ -2,6 +2,6 @@
 /* { dg-options "-std=gnu89" } // suppress default -pedantic-errors */
 
 struct s {
-  struct f {} /* dg-warning "does not declare anything" "" } */
-  struct g {} x; /* { dg-error "expected ';', identifier or " "" } */
+  struct f {} /* dg-warning "does not declare anything" } */
+  struct g {} x; /* { dg-error "expected ';', identifier or " } */
 };
diff --git a/gcc/testsuite/gcc.dg/two-types-7.c b/gcc/testsuite/gcc.dg/two-types-7.c
index 981c69b..f7a28d9 100644
--- a/gcc/testsuite/gcc.dg/two-types-7.c
+++ b/gcc/testsuite/gcc.dg/two-types-7.c
@@ -3,6 +3,6 @@
 
 struct s {
   struct f {}
-  enum a { X } /* { dg-error "expected ';', identifier or " "" } */
-  struct g {} /* { dg-error "expected identifier " "" } */
-}; /* { dg-warning "no semicolon" "" } */
+  enum a { X } /* { dg-error "expected ';', identifier or " } */
+  struct g {} /* { dg-error "expected identifier " } */
+}; /* { dg-warning "no semicolon" } */
diff --git a/gcc/testsuite/gcc.dg/two-types-8.c b/gcc/testsuite/gcc.dg/two-types-8.c
index 0103b22..666b9a9 100644
--- a/gcc/testsuite/gcc.dg/two-types-8.c
+++ b/gcc/testsuite/gcc.dg/two-types-8.c
@@ -2,9 +2,9 @@
 /* { dg-options "-std=gnu89" } // suppress default -pedantic-errors */
 
 enum x { XYZ }
-struct g { enum x a; }; /* { dg-error "expected ';', identifier or " "" } */
+struct g { enum x a; }; /* { dg-error "expected ';', identifier or " } */
 
 int f(struct g *x)
 {
-  return x->a == XYZ; /* { dg-bogus " has no member " "" } */
+  return x->a == XYZ; /* { dg-bogus " has no member " } */
 }
diff --git a/gcc/testsuite/gcc.dg/two-types-9.c b/gcc/testsuite/gcc.dg/two-types-9.c
index c6da949..0234c55 100644
--- a/gcc/testsuite/gcc.dg/two-types-9.c
+++ b/gcc/testsuite/gcc.dg/two-types-9.c
@@ -2,9 +2,9 @@
 /* { dg-options "-std=gnu89" } // suppress default -pedantic-errors */
 
 struct f {}
-static int a, b; /* { dg-error "expected ';', identifier or " "" } */
+static int a, b; /* { dg-error "expected ';', identifier or " } */
 
 int f()
 {
-	return a - b; /* { dg-bogus "invalid operands " "" } */
+	return a - b; /* { dg-bogus "invalid operands " } */
 }
diff --git a/gcc/testsuite/gcc.dg/uninit-I.c b/gcc/testsuite/gcc.dg/uninit-I.c
index 3f80d96..e59b2ad 100644
--- a/gcc/testsuite/gcc.dg/uninit-I.c
+++ b/gcc/testsuite/gcc.dg/uninit-I.c
@@ -4,5 +4,5 @@
 int sys_msgctl (void)
 {
   struct { int mode; } setbuf;
-  return setbuf.mode;  /* { dg-warning "'setbuf\.mode' is used" "" } */
+  return setbuf.mode;  /* { dg-warning "'setbuf\.mode' is used" } */
 }
diff --git a/gcc/testsuite/gcc.dg/uninit-pr19430.c b/gcc/testsuite/gcc.dg/uninit-pr19430.c
index ef47b26..e00f313 100644
--- a/gcc/testsuite/gcc.dg/uninit-pr19430.c
+++ b/gcc/testsuite/gcc.dg/uninit-pr19430.c
@@ -29,7 +29,7 @@ void frob(int *pi);
 int main(void)
 {
   int i; 
-  printf("i = %d\n", i); /* { dg-warning "'i' is used uninitialized in this function" "" } */
+  printf("i = %d\n", i); /* { dg-warning "'i' is used uninitialized in this function" } */
   frob(&i);
 
   return 0;
diff --git a/gcc/testsuite/gcc.dg/visibility-7.c b/gcc/testsuite/gcc.dg/visibility-7.c
index 016f3dd..8bf62d6 100644
--- a/gcc/testsuite/gcc.dg/visibility-7.c
+++ b/gcc/testsuite/gcc.dg/visibility-7.c
@@ -5,8 +5,8 @@
 
 extern int 
 __attribute__((visibility ("hidden")))
-xyzzy; /* { dg-message "note: previous declaration" "" } */
+xyzzy; /* { dg-message "note: previous declaration" } */
 
 int 
 __attribute__((visibility ("protected")))
-xyzzy = 5; /* { dg-warning "different visibility" "" } */
+xyzzy = 5; /* { dg-warning "different visibility" } */
diff --git a/gcc/testsuite/gcc.dg/winline-10.c b/gcc/testsuite/gcc.dg/winline-10.c
index b781bc6..dfc868f 100644
--- a/gcc/testsuite/gcc.dg/winline-10.c
+++ b/gcc/testsuite/gcc.dg/winline-10.c
@@ -3,7 +3,7 @@
 
 struct s { int a; };
 
-inline void f (x)	/* { dg-warning "inlining .* mismatched arg" "" } */
+inline void f (x)	/* { dg-warning "inlining .* mismatched arg" } */
      int x;
 {
   asm ("");
diff --git a/gcc/testsuite/gcc.dg/winline-2.c b/gcc/testsuite/gcc.dg/winline-2.c
index f4f7cc4..0d9114b 100644
--- a/gcc/testsuite/gcc.dg/winline-2.c
+++ b/gcc/testsuite/gcc.dg/winline-2.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-Winline -O2 -fgnu89-inline" } */
 
-inline int q(void);		 /* { dg-warning "body not available" "" } */
+inline int q(void);		 /* { dg-warning "body not available" } */
 inline int t(void)
 {
 	return q();		 /* { dg-message "called from here" } */
diff --git a/gcc/testsuite/gcc.dg/winline-3.c b/gcc/testsuite/gcc.dg/winline-3.c
index 6c5d6ae..7b7c8c5 100644
--- a/gcc/testsuite/gcc.dg/winline-3.c
+++ b/gcc/testsuite/gcc.dg/winline-3.c
@@ -2,7 +2,7 @@
 /* { dg-options "-Winline -O2 --param max-inline-insns-single=1 --param inline-min-speedup=100 -fgnu89-inline" } */
 
 void big (void);
-inline int q(void) /* { dg-warning "max-inline-insns-single" "" } */
+inline int q(void) /* { dg-warning "max-inline-insns-single" } */
 {
 	big();
 	big();
diff --git a/gcc/testsuite/gcc.dg/winline-9.c b/gcc/testsuite/gcc.dg/winline-9.c
index f97a764..6d9cba3 100644
--- a/gcc/testsuite/gcc.dg/winline-9.c
+++ b/gcc/testsuite/gcc.dg/winline-9.c
@@ -10,7 +10,7 @@ int aa (void)
   test(t);
 }
 static inline
-int bb (void) /* { dg-warning "large-stack-frame" "" } */
+int bb (void) /* { dg-warning "large-stack-frame" } */
 {
   char t[100];
   test(t);
diff --git a/gcc/testsuite/gcc.target/i386/attr-returns_twice-1.c b/gcc/testsuite/gcc.target/i386/attr-returns_twice-1.c
index cd820d2..17499ad 100644
--- a/gcc/testsuite/gcc.target/i386/attr-returns_twice-1.c
+++ b/gcc/testsuite/gcc.target/i386/attr-returns_twice-1.c
@@ -7,7 +7,7 @@ void g(int);
 int
 main (void)
 {
-  register int reg asm ("esi") = 1; /* { dg-warning "might be clobbered" "" } */
+  register int reg asm ("esi") = 1; /* { dg-warning "might be clobbered" } */
 
   if (!newsetjmp ())
     {
diff --git a/gcc/testsuite/gcc.target/i386/chkp-const-check-2.c b/gcc/testsuite/gcc.target/i386/chkp-const-check-2.c
index 683c21d..839cf78 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-const-check-2.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-const-check-2.c
@@ -4,5 +4,5 @@
 int test (int *p)
 {
   p = (int *)__builtin___bnd_set_ptr_bounds (p, sizeof (int));
-  return *(p + 1); /* { dg-warning "memory access check always fail" "" } */
+  return *(p + 1); /* { dg-warning "memory access check always fail" } */
 }
diff --git a/gcc/testsuite/gcc.target/i386/chkp-label-address.c b/gcc/testsuite/gcc.target/i386/chkp-label-address.c
index 979c33e..23a2f7c 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-label-address.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-label-address.c
@@ -3,7 +3,7 @@
 
 #include <stdio.h>
 
-static int f1 () /* { dg-warning "function cannot be instrumented" "" } */
+static int f1 () /* { dg-warning "function cannot be instrumented" } */
 {
   static int array = &&label_B - &&label_A;
 
diff --git a/gcc/testsuite/gcc.target/i386/chkp-remove-bndint-2.c b/gcc/testsuite/gcc.target/i386/chkp-remove-bndint-2.c
index 413941a..eea0b0a 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-remove-bndint-2.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-remove-bndint-2.c
@@ -12,5 +12,5 @@ struct S
 int test (struct S *ps)
 {
   int *pi = &ps->b;
-  return *(pi + 1); /* { dg-warning "memory access check always fail" "" } */
+  return *(pi + 1); /* { dg-warning "memory access check always fail" } */
 }
diff --git a/gcc/testsuite/gcc.target/i386/pr39162.c b/gcc/testsuite/gcc.target/i386/pr39162.c
index efb46de..8f5a0d9 100644
--- a/gcc/testsuite/gcc.target/i386/pr39162.c
+++ b/gcc/testsuite/gcc.target/i386/pr39162.c
@@ -8,7 +8,7 @@ typedef long long __m256i __attribute__ ((__vector_size__ (32), __may_alias__));
 extern __m256i y;
 
 void
-bar (__m256i x) /* { dg-warning "AVX" "" } */
+bar (__m256i x) /* { dg-warning "AVX" } */
 {
   y = x;
 }
diff --git a/gcc/testsuite/gcc.target/i386/sse-5.c b/gcc/testsuite/gcc.target/i386/sse-5.c
index 33118b7..e06bd51 100644
--- a/gcc/testsuite/gcc.target/i386/sse-5.c
+++ b/gcc/testsuite/gcc.target/i386/sse-5.c
@@ -5,7 +5,7 @@
 
 typedef double v2df __attribute__ ((vector_size (16)));
 v2df p;
-void q(v2df t) /* { dg-warning "SSE" "" } */
+void q(v2df t) /* { dg-warning "SSE" } */
 {
 	p=t;
 }
diff --git a/gcc/testsuite/gcc.target/powerpc/altivec-types-1.c b/gcc/testsuite/gcc.target/powerpc/altivec-types-1.c
index 9096892..bcce2a3 100644
--- a/gcc/testsuite/gcc.target/powerpc/altivec-types-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/altivec-types-1.c
@@ -28,64 +28,64 @@ __vector _Bool vb;
 
 /* These should be rejected as invalid AltiVec types.  */
 
-__vector long long vll;			/* { dg-error "AltiVec types" "" } */
-__vector unsigned long long vull;	/* { dg-error "AltiVec types" "" } */
-__vector signed long long vsll;		/* { dg-error "AltiVec types" "" } */
-__vector __bool long long vbll;		/* { dg-error "AltiVec types" "" } */
-__vector long long int vlli;		/* { dg-error "AltiVec types" "" } */
-__vector unsigned long long int vulli;	/* { dg-error "AltiVec types" "" } */
-__vector signed long long int vslli;	/* { dg-error "AltiVec types" "" } */
-__vector __bool long long int vblli;	/* { dg-error "AltiVec types" "" } */
-__vector double vd1;			/* { dg-error "AltiVec types" "" } */
-__vector long double vld;		/* { dg-error "AltiVec types" "" } */
-__vector _Complex float vcf;		/* { dg-error "AltiVec types" "" } */
-__vector _Complex double vcd;		/* { dg-error "AltiVec types" "" } */
-__vector _Complex long double vcld;	/* { dg-error "AltiVec types" "" } */
-__vector _Complex signed char vcsc;	/* { dg-error "AltiVec types" "" } */
-__vector _Complex unsigned char vcuc;	/* { dg-error "AltiVec types" "" } */
-__vector _Complex short vcss;		/* { dg-error "AltiVec types" "" } */
-__vector _Complex unsigned short vcus;	/* { dg-error "AltiVec types" "" } */
-__vector _Complex int vcsi;		/* { dg-error "AltiVec types" "" } */
-__vector _Complex unsigned int vcui;	/* { dg-error "AltiVec types" "" } */
-__vector _Complex long vcsl;		/* { dg-error "AltiVec types" "" } */
-__vector _Complex unsigned long vcul;	/* { dg-error "AltiVec types" "" } */
-__vector _Complex long long vcsll;	/* { dg-error "AltiVec types" "" } */
-__vector _Complex unsigned long long vcull; /* { dg-error "AltiVec types" "" } */
-__vector __complex float v_cf;		/* { dg-error "AltiVec types" "" } */
-__vector __complex double v_cd;		/* { dg-error "AltiVec types" "" } */
-__vector __complex long double v_cld;	/* { dg-error "AltiVec types" "" } */
-__vector __complex signed char v_csc;	/* { dg-error "AltiVec types" "" } */
-__vector __complex unsigned char v_cuc;	/* { dg-error "AltiVec types" "" } */
-__vector __complex short v_css;		/* { dg-error "AltiVec types" "" } */
-__vector __complex unsigned short v_cus; /* { dg-error "AltiVec types" "" } */
-__vector __complex int v_csi;		/* { dg-error "AltiVec types" "" } */
-__vector __complex unsigned int v_cui;	/* { dg-error "AltiVec types" "" } */
-__vector __complex long v_csl;		/* { dg-error "AltiVec types" "" } */
-__vector __complex unsigned long v_cul;	/* { dg-error "AltiVec types" "" } */
-__vector __complex long long v_csll;	/* { dg-error "AltiVec types" "" } */
-__vector __complex unsigned long long v_cull; /* { dg-error "AltiVec types" "" } */
+__vector long long vll;			/* { dg-error "AltiVec types" } */
+__vector unsigned long long vull;	/* { dg-error "AltiVec types" } */
+__vector signed long long vsll;		/* { dg-error "AltiVec types" } */
+__vector __bool long long vbll;		/* { dg-error "AltiVec types" } */
+__vector long long int vlli;		/* { dg-error "AltiVec types" } */
+__vector unsigned long long int vulli;	/* { dg-error "AltiVec types" } */
+__vector signed long long int vslli;	/* { dg-error "AltiVec types" } */
+__vector __bool long long int vblli;	/* { dg-error "AltiVec types" } */
+__vector double vd1;			/* { dg-error "AltiVec types" } */
+__vector long double vld;		/* { dg-error "AltiVec types" } */
+__vector _Complex float vcf;		/* { dg-error "AltiVec types" } */
+__vector _Complex double vcd;		/* { dg-error "AltiVec types" } */
+__vector _Complex long double vcld;	/* { dg-error "AltiVec types" } */
+__vector _Complex signed char vcsc;	/* { dg-error "AltiVec types" } */
+__vector _Complex unsigned char vcuc;	/* { dg-error "AltiVec types" } */
+__vector _Complex short vcss;		/* { dg-error "AltiVec types" } */
+__vector _Complex unsigned short vcus;	/* { dg-error "AltiVec types" } */
+__vector _Complex int vcsi;		/* { dg-error "AltiVec types" } */
+__vector _Complex unsigned int vcui;	/* { dg-error "AltiVec types" } */
+__vector _Complex long vcsl;		/* { dg-error "AltiVec types" } */
+__vector _Complex unsigned long vcul;	/* { dg-error "AltiVec types" } */
+__vector _Complex long long vcsll;	/* { dg-error "AltiVec types" } */
+__vector _Complex unsigned long long vcull; /* { dg-error "AltiVec types" } */
+__vector __complex float v_cf;		/* { dg-error "AltiVec types" } */
+__vector __complex double v_cd;		/* { dg-error "AltiVec types" } */
+__vector __complex long double v_cld;	/* { dg-error "AltiVec types" } */
+__vector __complex signed char v_csc;	/* { dg-error "AltiVec types" } */
+__vector __complex unsigned char v_cuc;	/* { dg-error "AltiVec types" } */
+__vector __complex short v_css;		/* { dg-error "AltiVec types" } */
+__vector __complex unsigned short v_cus; /* { dg-error "AltiVec types" } */
+__vector __complex int v_csi;		/* { dg-error "AltiVec types" } */
+__vector __complex unsigned int v_cui;	/* { dg-error "AltiVec types" } */
+__vector __complex long v_csl;		/* { dg-error "AltiVec types" } */
+__vector __complex unsigned long v_cul;	/* { dg-error "AltiVec types" } */
+__vector __complex long long v_csll;	/* { dg-error "AltiVec types" } */
+__vector __complex unsigned long long v_cull; /* { dg-error "AltiVec types" } */
 
 /* These should be rejected because the component types are invalid.  We
    don't care about the actual error messages here.  */
 
-__vector __bool unsigned char vbuc;	/* { dg-error "" "" } */
-__vector __bool signed char vbsc;	/* { dg-error "" "" } */
-__vector __bool unsigned short vbuh;	/* { dg-error "" "" } */
-__vector __bool signed short vbsh;	/* { dg-error "" "" } */
-__vector __bool unsigned int vbui;	/* { dg-error "" "" } */
-__vector __bool signed int vbsi;	/* { dg-error "" "" } */
-__vector __bool unsigned vbuj;		/* { dg-error "" "" } */
-__vector __bool signed vbsj;		/* { dg-error "" "" } */
-__vector signed float vsf;		/* { dg-error "" "" } */
-__vector unsigned float vuf;		/* { dg-error "" "" } */
-__vector short float vsf;		/* { dg-error "" "" } */
-__vector signed double vsd;		/* { dg-error "" "" } */
-__vector unsigned double vud;		/* { dg-error "" "" } */
-__vector short double vsd;		/* { dg-error "" "" } */
-__vector __bool float vbf;		/* { dg-error "" "" } */
-__vector __bool double vbd;		/* { dg-error "" "" } */
-__vector __bool short float blf;	/* { dg-error "" "" } */
-__vector __bool short double vlbd;	/* { dg-error "" "" } */
+__vector __bool unsigned char vbuc;	/* { dg-error "" } */
+__vector __bool signed char vbsc;	/* { dg-error "" } */
+__vector __bool unsigned short vbuh;	/* { dg-error "" } */
+__vector __bool signed short vbsh;	/* { dg-error "" } */
+__vector __bool unsigned int vbui;	/* { dg-error "" } */
+__vector __bool signed int vbsi;	/* { dg-error "" } */
+__vector __bool unsigned vbuj;		/* { dg-error "" } */
+__vector __bool signed vbsj;		/* { dg-error "" } */
+__vector signed float vsf;		/* { dg-error "" } */
+__vector unsigned float vuf;		/* { dg-error "" } */
+__vector short float vsf;		/* { dg-error "" } */
+__vector signed double vsd;		/* { dg-error "" } */
+__vector unsigned double vud;		/* { dg-error "" } */
+__vector short double vsd;		/* { dg-error "" } */
+__vector __bool float vbf;		/* { dg-error "" } */
+__vector __bool double vbd;		/* { dg-error "" } */
+__vector __bool short float blf;	/* { dg-error "" } */
+__vector __bool short double vlbd;	/* { dg-error "" } */
 
 /* { dg-message "note: previous" "prev vsf" { target *-*-* } 79 } */
 /* { dg-message "note: previous" "prev vsd" { target *-*-* } 82 } */
diff --git a/gcc/testsuite/gcc.target/powerpc/altivec-types-2.c b/gcc/testsuite/gcc.target/powerpc/altivec-types-2.c
index cee6c8f..4df12da 100644
--- a/gcc/testsuite/gcc.target/powerpc/altivec-types-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/altivec-types-2.c
@@ -5,10 +5,10 @@
 
 /* These should get warnings for 32-bit code.  */
 
-__vector long vl;			/* { dg-warning "deprecated" "" } */
-__vector unsigned long vul;		/* { dg-warning "deprecated" "" } */
-__vector signed long vsl;		/* { dg-warning "deprecated" "" } */
-__vector __bool long int vbli;		/* { dg-warning "deprecated" "" } */
-__vector long int vli;			/* { dg-warning "deprecated" "" } */
-__vector unsigned long int vuli;	/* { dg-warning "deprecated" "" } */
-__vector signed long int vsli;		/* { dg-warning "deprecated" "" } */
+__vector long vl;			/* { dg-warning "deprecated" } */
+__vector unsigned long vul;		/* { dg-warning "deprecated" } */
+__vector signed long vsl;		/* { dg-warning "deprecated" } */
+__vector __bool long int vbli;		/* { dg-warning "deprecated" } */
+__vector long int vli;			/* { dg-warning "deprecated" } */
+__vector unsigned long int vuli;	/* { dg-warning "deprecated" } */
+__vector signed long int vsli;		/* { dg-warning "deprecated" } */
diff --git a/gcc/testsuite/gcc.target/powerpc/altivec-types-3.c b/gcc/testsuite/gcc.target/powerpc/altivec-types-3.c
index ea371ce..fe28e53 100644
--- a/gcc/testsuite/gcc.target/powerpc/altivec-types-3.c
+++ b/gcc/testsuite/gcc.target/powerpc/altivec-types-3.c
@@ -5,10 +5,10 @@
 
 /* These should be rejected for 64-bit code.  */
 
-__vector long vl;			/* { dg-error "invalid for 64" "" } */
-__vector unsigned long vul;		/* { dg-error "invalid for 64" "" } */
-__vector signed long vsl;		/* { dg-error "invalid for 64" "" } */
-__vector __bool long int vbli;		/* { dg-error "invalid for 64" "" } */
-__vector long int vli;			/* { dg-error "invalid for 64" "" } */
-__vector unsigned long int vuli;	/* { dg-error "invalid for 64" "" } */
-__vector signed long int vsli;		/* { dg-error "invalid for 64" "" } */
+__vector long vl;			/* { dg-error "invalid for 64" } */
+__vector unsigned long vul;		/* { dg-error "invalid for 64" } */
+__vector signed long vsl;		/* { dg-error "invalid for 64" } */
+__vector __bool long int vbli;		/* { dg-error "invalid for 64" } */
+__vector long int vli;			/* { dg-error "invalid for 64" } */
+__vector unsigned long int vuli;	/* { dg-error "invalid for 64" } */
+__vector signed long int vsli;		/* { dg-error "invalid for 64" } */
diff --git a/gcc/testsuite/gcc.target/powerpc/float128-mix.c b/gcc/testsuite/gcc.target/powerpc/float128-mix.c
index d0cac202..8979cdf 100644
--- a/gcc/testsuite/gcc.target/powerpc/float128-mix.c
+++ b/gcc/testsuite/gcc.target/powerpc/float128-mix.c
@@ -7,10 +7,10 @@
 /* Test to make sure that __float128 and long double cannot be combined together.  */
 __float128 add (__float128 a, long double b)
 {
-  return a+b;	/* { dg-error "__float128 and long double cannot be used in the same expression" "" } */
+  return a+b;	/* { dg-error "__float128 and long double cannot be used in the same expression" } */
 }
 
 __ibm128 sub (long double a, __float128 b)
 {
-  return a-b;	/* { dg-error "__float128 and long double cannot be used in the same expression" "" } */
+  return a-b;	/* { dg-error "__float128 and long double cannot be used in the same expression" } */
 }
diff --git a/gcc/testsuite/gcc.target/powerpc/no-r11-3.c b/gcc/testsuite/gcc.target/powerpc/no-r11-3.c
index 9cc8309..a4985a3 100644
--- a/gcc/testsuite/gcc.target/powerpc/no-r11-3.c
+++ b/gcc/testsuite/gcc.target/powerpc/no-r11-3.c
@@ -6,7 +6,7 @@
 extern void ext_call (int (func) (void));
 
 int
-outer_func (int init)	/* { dg-error "-mno-pointers-to-nested-functions option" "" } */
+outer_func (int init)	/* { dg-error "-mno-pointers-to-nested-functions option" } */
 {
   int value = init;
 
diff --git a/gcc/testsuite/gcc.target/spu/Wmain.c b/gcc/testsuite/gcc.target/spu/Wmain.c
index 58eca02..b6bfe41 100644
--- a/gcc/testsuite/gcc.target/spu/Wmain.c
+++ b/gcc/testsuite/gcc.target/spu/Wmain.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-Wmain -mstdmain" } */
 
-int main (void *wrong)/* { dg-warning "first argument of 'main' should be 'int'" "" } */
+int main (void *wrong)/* { dg-warning "first argument of 'main' should be 'int'" } */
 { 
   /* { dg-warning "'main' takes only zero or two arguments" "" { target *-*-* } 4 } */
 }
diff --git a/gcc/testsuite/gcc.target/spu/ea/errors2.c b/gcc/testsuite/gcc.target/spu/ea/errors2.c
index 74a32ff..f8269e9 100644
--- a/gcc/testsuite/gcc.target/spu/ea/errors2.c
+++ b/gcc/testsuite/gcc.target/spu/ea/errors2.c
@@ -60,7 +60,7 @@ struct foo ea_struct3 = {
 
 struct foo ea_struct4 = {
   40,
-  (__ea char *)lm_str,	/* { dg-error "(initializer element is not constant)|(near initialization)" "" } */
+  (__ea char *)lm_str,	/* { dg-error "(initializer element is not constant)|(near initialization)" } */
   41,
 };
 
diff --git a/gcc/testsuite/gfortran.dg/assignment_1.f90 b/gcc/testsuite/gfortran.dg/assignment_1.f90
index 4322e59..4022b0d 100644
--- a/gcc/testsuite/gfortran.dg/assignment_1.f90
+++ b/gcc/testsuite/gfortran.dg/assignment_1.f90
@@ -12,7 +12,7 @@ integer, target :: t, s
 t = 1
 p => s
 ! We didn't dereference the pointer in the following line.
-p = f() ! { dg-warning "POINTER-valued function" "" }
+p = f() ! { dg-warning "POINTER-valued function" }
 p = p+1
 if (p.ne.2) call abort()
 if (p.ne.s) call abort()
diff --git a/gcc/testsuite/gfortran.dg/common_3.f90 b/gcc/testsuite/gfortran.dg/common_3.f90
index 818738e..c5e40aa 100644
--- a/gcc/testsuite/gfortran.dg/common_3.f90
+++ b/gcc/testsuite/gfortran.dg/common_3.f90
@@ -1,7 +1,7 @@
 ! { dg-do compile }
 ! Check that equivalences match common block layout.
 program common_3
-  common /block/ a, b, c, d ! { dg-error "not match ordering" "" }
+  common /block/ a, b, c, d ! { dg-error "not match ordering" }
   integer a, b, c, d, n
   dimension n(4)
   equivalence (a, n(1))
diff --git a/gcc/testsuite/gfortran.dg/der_io_1.f90 b/gcc/testsuite/gfortran.dg/der_io_1.f90
index 4cbbf77..03a1913 100644
--- a/gcc/testsuite/gfortran.dg/der_io_1.f90
+++ b/gcc/testsuite/gfortran.dg/der_io_1.f90
@@ -11,7 +11,7 @@ program der_io_1
 
   v%p => i
   i = 42
-  write (unit=s, fmt='(I2)') v ! { dg-error "POINTER components" "" }
+  write (unit=s, fmt='(I2)') v ! { dg-error "POINTER components" }
   if (s .ne. '42') call abort ()
 end program
 
diff --git a/gcc/testsuite/gfortran.dg/g77/20030326-1.f b/gcc/testsuite/gfortran.dg/g77/20030326-1.f
index 6efc5d9..395b80e 100644
--- a/gcc/testsuite/gfortran.dg/g77/20030326-1.f
+++ b/gcc/testsuite/gfortran.dg/g77/20030326-1.f
@@ -6,5 +6,5 @@
 ! For gfortran, see PR 13490
 !
        integer c
-       c = -2147483648_4 / (-1) ! { dg-error "too big for its kind" "" }
+       c = -2147483648_4 / (-1) ! { dg-error "too big for its kind" }
        end
diff --git a/gcc/testsuite/gfortran.dg/g77/9263.f b/gcc/testsuite/gfortran.dg/g77/9263.f
index 77ce985..f3255e9 100644
--- a/gcc/testsuite/gfortran.dg/g77/9263.f
+++ b/gcc/testsuite/gfortran.dg/g77/9263.f
@@ -3,9 +3,9 @@ C { dg-do compile }
       PARAMETER (P=10)
       INTEGER C(10),D(10),E(10),F(10)
 C     TERMINAL NOT INTEGER
-      DATA (C(I),I=1,P)    /10*10/ ! { dg-error "End expression in DO loop" "" }
+      DATA (C(I),I=1,P)    /10*10/ ! { dg-error "End expression in DO loop" }
 C     START NOT INTEGER
-      DATA (D(I),I=Q,10)   /10*10/ ! { dg-error "Start expression in DO loop" "" }
+      DATA (D(I),I=Q,10)   /10*10/ ! { dg-error "Start expression in DO loop" }
 C     INCREMENT NOT INTEGER
-      DATA (E(I),I=1,10,Q) /10*10/ ! { dg-error "Step expression in DO loop" "" }
+      DATA (E(I),I=1,10,Q) /10*10/ ! { dg-error "Step expression in DO loop" }
       END
diff --git a/gcc/testsuite/gfortran.dg/g77/960317-1.f b/gcc/testsuite/gfortran.dg/g77/960317-1.f
index c8b3b69..c976905 100644
--- a/gcc/testsuite/gfortran.dg/g77/960317-1.f
+++ b/gcc/testsuite/gfortran.dg/g77/960317-1.f
@@ -14,7 +14,7 @@ C
       SUBROUTINE QUICK
       SAVE
 C
-      ASSIGN 101 TO JUMP ! { dg-warning "Deleted feature: ASSIGN" "" }
+      ASSIGN 101 TO JUMP ! { dg-warning "Deleted feature: ASSIGN" }
   101 Continue
 C
       RETURN
diff --git a/gcc/testsuite/gfortran.dg/g77/970625-2.f b/gcc/testsuite/gfortran.dg/g77/970625-2.f
index 7f8a464..df9ed3d 100644
--- a/gcc/testsuite/gfortran.dg/g77/970625-2.f
+++ b/gcc/testsuite/gfortran.dg/g77/970625-2.f
@@ -52,22 +52,22 @@
       LOGICAL REAL
       REAL LOGICAL
       INTEGER INTEGER, STOP, RETURN, GO TO
-      ASSIGN 9 TO STOP     ! { dg-warning "ASSIGN" "" }
+      ASSIGN 9 TO STOP     ! { dg-warning "ASSIGN" }
       ASSIGN = 9 + LOGICAL
-      ASSIGN 7 TO RETURN   ! { dg-warning "ASSIGN" "" }
-      ASSIGN 9 TO GO TO    ! { dg-warning "ASSIGN" "" }
+      ASSIGN 7 TO RETURN   ! { dg-warning "ASSIGN" }
+      ASSIGN 9 TO GO TO    ! { dg-warning "ASSIGN" }
       GO TO = 5
       STOP = 8
-      IF (.NOT.REAL) GOTO STOP ! { dg-warning "Assigned GOTO" "" }
+      IF (.NOT.REAL) GOTO STOP ! { dg-warning "Assigned GOTO" }
       IF (LOGICAL.GT.INTEGER) THEN
          IF = LOGICAL +5
-         IF (LOGICAL.EQ.5) ASSIGN 5 TO IF ! { dg-warning "ASSIGN" "" }
+         IF (LOGICAL.EQ.5) ASSIGN 5 TO IF ! { dg-warning "ASSIGN" }
          INTEGER=IF
       ELSE
-         IF (ASSIGN.GT.STOP) ASSIGN 9 TO GOTO ! { dg-warning "ASSIGN" "" }
+         IF (ASSIGN.GT.STOP) ASSIGN 9 TO GOTO ! { dg-warning "ASSIGN" }
          ELSE = GO TO
          END IF = ELSE + GO TO
-         IF (.NOT.REAL.AND.GOTO.GT.ELSE) GOTO RETURN ! { dg-warning "Assigned GOTO" "" }
+         IF (.NOT.REAL.AND.GOTO.GT.ELSE) GOTO RETURN ! { dg-warning "Assigned GOTO" }
       END IF
     5 CONTINUE
     7 LOGICAL=LOGICAL+STOP
diff --git a/gcc/testsuite/gfortran.dg/g77/980615-0.f b/gcc/testsuite/gfortran.dg/g77/980615-0.f
index 5107f4f..f4800fe 100644
--- a/gcc/testsuite/gfortran.dg/g77/980615-0.f
+++ b/gcc/testsuite/gfortran.dg/g77/980615-0.f
@@ -8,5 +8,5 @@ c { dg-do compile }
       CaLL foo(W)
       END
       SUBROUTINE foo(W)
-      yy(I)=A(I)Q(X) ! { dg-error "Unclassifiable statement" "" }
+      yy(I)=A(I)Q(X) ! { dg-error "Unclassifiable statement" }
 c { dg-error "end of file" "end of file" { target *-*-* } 0 }
diff --git a/gcc/testsuite/gfortran.dg/g77/check0.f b/gcc/testsuite/gfortran.dg/g77/check0.f
index f0a14f8..fb22aaa 100644
--- a/gcc/testsuite/gfortran.dg/g77/check0.f
+++ b/gcc/testsuite/gfortran.dg/g77/check0.f
@@ -8,7 +8,7 @@ CCC        * stmt.c (check_seenlabel): When search for line number note for
 CCC        warning, handle case where there is no such note.
       logical l(10)
       integer i(10)
-      goto (10,20),l ! { dg-error "Selection expression in computed GOTO" "" }
-      goto (10,20),i ! { dg-error "Selection expression in computed GOTO" "" }
+      goto (10,20),l ! { dg-error "Selection expression in computed GOTO" }
+      goto (10,20),i ! { dg-error "Selection expression in computed GOTO" }
  10   stop
  20   end
diff --git a/gcc/testsuite/gfortran.dg/g77/dnrm2.f b/gcc/testsuite/gfortran.dg/g77/dnrm2.f
index dbf9f0d..8c91ac5 100644
--- a/gcc/testsuite/gfortran.dg/g77/dnrm2.f
+++ b/gcc/testsuite/gfortran.dg/g77/dnrm2.f
@@ -33,21 +33,21 @@ c     current Netlib BLAS.)
       if(n .gt. 0 .and. incx.gt.0) go to 10
          dnrm2  = zero
          go to 300
-   10 assign 30 to next ! { dg-warning "ASSIGN" "" }
+   10 assign 30 to next ! { dg-warning "ASSIGN" }
       sum = zero
       i = 1
       ix = 1
-   20    go to next,(30, 50, 70, 110) ! { dg-warning "Assigned GOTO" "" }
+   20    go to next,(30, 50, 70, 110) ! { dg-warning "Assigned GOTO" }
    30 if( dabs(dx(i)) .gt. cutlo) go to 85
-      assign 50 to next ! { dg-warning "ASSIGN" "" }
+      assign 50 to next ! { dg-warning "ASSIGN" }
       xmax = zero
    50 if( dx(i) .eq. zero) go to 200
       if( dabs(dx(i)) .gt. cutlo) go to 85
-      assign 70 to next ! { dg-warning "ASSIGN" "" }
+      assign 70 to next ! { dg-warning "ASSIGN" }
       go to 105
   100 continue
       ix = j
-      assign 110 to next ! { dg-warning "ASSIGN" "" }
+      assign 110 to next ! { dg-warning "ASSIGN" }
       sum = (sum / dx(i)) / dx(i)
   105 xmax = dabs(dx(i))
       go to 115
diff --git a/gcc/testsuite/gfortran.dg/g77/pr9258.f b/gcc/testsuite/gfortran.dg/g77/pr9258.f
index 6213245..dee58b4 100644
--- a/gcc/testsuite/gfortran.dg/g77/pr9258.f
+++ b/gcc/testsuite/gfortran.dg/g77/pr9258.f
@@ -5,14 +5,14 @@ C { dg-do compile }
       SUBROUTINE FOO (B)
 
   10  CALL BAR (A)
-      ASSIGN 20 TO M           !{ dg-warning "Deleted feature: ASSIGN" "" }
+      ASSIGN 20 TO M           !{ dg-warning "Deleted feature: ASSIGN" }
       IF (100.LT.A) GOTO 10
       GOTO 40
 C
   20  IF (B.LT.ABS(A)) GOTO 10
-      ASSIGN 30 TO M           !{ dg-warning "Deleted feature: ASSIGN" "" }
+      ASSIGN 30 TO M           !{ dg-warning "Deleted feature: ASSIGN" }
       GOTO 40
 C
-  30  ASSIGN 10 TO M           !{ dg-warning "Deleted feature: ASSIGN" "" }
-  40  GOTO M,(10,20,30)        !{ dg-warning "Deleted feature: Assigned GOTO" "" }
+  30  ASSIGN 10 TO M           !{ dg-warning "Deleted feature: ASSIGN" }
+  40  GOTO M,(10,20,30)        !{ dg-warning "Deleted feature: Assigned GOTO" }
       END
diff --git a/gcc/testsuite/gfortran.dg/ichar_1.f90 b/gcc/testsuite/gfortran.dg/ichar_1.f90
index 362cd2f..dea146e 100644
--- a/gcc/testsuite/gfortran.dg/ichar_1.f90
+++ b/gcc/testsuite/gfortran.dg/ichar_1.f90
@@ -45,23 +45,23 @@ program ichar_1
    g2(1,1) = 'a'
    if (ichar(g2(1,1)) /= 97) call abort
 
-   i = ichar(c)      ! { dg-error "must be of length one" "" }
-   i = ichar(c(:))   ! { dg-error "must be of length one" "" }
-   i = ichar(s2)     ! { dg-error "must be of length one" "" }
-   i = ichar(c(1:2)) ! { dg-error "must be of length one" "" }
-   i = ichar(c(1:))  ! { dg-error "must be of length one" "" }
-   i = ichar('abc')  ! { dg-error "must be of length one" "" }
+   i = ichar(c)      ! { dg-error "must be of length one" }
+   i = ichar(c(:))   ! { dg-error "must be of length one" }
+   i = ichar(s2)     ! { dg-error "must be of length one" }
+   i = ichar(c(1:2)) ! { dg-error "must be of length one" }
+   i = ichar(c(1:))  ! { dg-error "must be of length one" }
+   i = ichar('abc')  ! { dg-error "must be of length one" }
 
    ! ichar and iachar use the same checking routines. DO a couple of tests to
    ! make sure it's not totally broken.
 
    if (ichar(c(3:3)) /= 97) call abort
-   i = ichar(c)      ! { dg-error "must be of length one" "" }
+   i = ichar(c)      ! { dg-error "must be of length one" }
    
    i = ichar(dt%addr(1:1))
-   i = ichar(dt%addr) ! { dg-error "must be of length one" "" }
-   i = ichar(dt%addr(1:2)) ! { dg-error "must be of length one" "" }
-   i = ichar(dt%addr(1:)) ! { dg-error "must be of length one" "" }
+   i = ichar(dt%addr) ! { dg-error "must be of length one" }
+   i = ichar(dt%addr(1:2)) ! { dg-error "must be of length one" }
+   i = ichar(dt%addr(1:)) ! { dg-error "must be of length one" }
    
    i = ichar(dt1%addr(1:1))
    i = ichar(dt1%addr)
diff --git a/gcc/testsuite/gfortran.dg/interface_1.f90 b/gcc/testsuite/gfortran.dg/interface_1.f90
index aa6850f..c659858 100644
--- a/gcc/testsuite/gfortran.dg/interface_1.f90
+++ b/gcc/testsuite/gfortran.dg/interface_1.f90
@@ -32,7 +32,7 @@ module z
 
   contains
 
-    real function f(a)   ! { dg-warning "in generic interface" "" }
+    real function f(a)   ! { dg-warning "in generic interface" }
       real a
       f = a
     end function
diff --git a/gcc/testsuite/gfortran.dg/namelist_1.f90 b/gcc/testsuite/gfortran.dg/namelist_1.f90
index ee028dd..8ca28dc 100644
--- a/gcc/testsuite/gfortran.dg/namelist_1.f90
+++ b/gcc/testsuite/gfortran.dg/namelist_1.f90
@@ -3,5 +3,5 @@
 module namelist_1
   public
   integer,private :: x
-  namelist /n/ x ! { dg-error "cannot be member of PUBLIC namelist" "" }
+  namelist /n/ x ! { dg-error "cannot be member of PUBLIC namelist" }
 end module
diff --git a/gcc/testsuite/gfortran.dg/namelist_2.f90 b/gcc/testsuite/gfortran.dg/namelist_2.f90
index b92e459..f6dd2b4 100644
--- a/gcc/testsuite/gfortran.dg/namelist_2.f90
+++ b/gcc/testsuite/gfortran.dg/namelist_2.f90
@@ -3,5 +3,5 @@
 subroutine namelist_2(x)
   integer,intent(in) :: x
   namelist /n/ x
-  read(*,n) ! { dg-error "is INTENT" "" }
+  read(*,n) ! { dg-error "is INTENT" }
 end subroutine namelist_2
diff --git a/gcc/testsuite/gfortran.dg/namelist_3.f90 b/gcc/testsuite/gfortran.dg/namelist_3.f90
index 722b940..f37946d 100644
--- a/gcc/testsuite/gfortran.dg/namelist_3.f90
+++ b/gcc/testsuite/gfortran.dg/namelist_3.f90
@@ -4,5 +4,5 @@
 program namelist_3
   integer,pointer :: x
   allocate (x)
-  namelist /n/ x ! { dg-error "NAMELIST attribute with POINTER attribute" "" }
+  namelist /n/ x ! { dg-error "NAMELIST attribute with POINTER attribute" }
 end program namelist_3
diff --git a/gcc/testsuite/gfortran.dg/namelist_print_2.f b/gcc/testsuite/gfortran.dg/namelist_print_2.f
index c37e359..cc1df5b 100644
--- a/gcc/testsuite/gfortran.dg/namelist_print_2.f
+++ b/gcc/testsuite/gfortran.dg/namelist_print_2.f
@@ -9,5 +9,5 @@
       real  x
       namelist /mynml/ x
       x = 1
-      print mynml  ! { dg-error "PRINT namelist.*extension" "" }
+      print mynml  ! { dg-error "PRINT namelist.*extension" }
       end
diff --git a/gcc/testsuite/gfortran.dg/oldstyle_1.f90 b/gcc/testsuite/gfortran.dg/oldstyle_1.f90
index 47c07cb8..6d5d189 100644
--- a/gcc/testsuite/gfortran.dg/oldstyle_1.f90
+++ b/gcc/testsuite/gfortran.dg/oldstyle_1.f90
@@ -1,7 +1,7 @@
 ! { dg-do run }
-      integer i, j /1/, g/2/, h ! { dg-warning "" "" }
-      integer k, l(3) /2*2,1/   ! { dg-warning "" "" }
-      real pi /3.1416/, e       ! { dg-warning "" "" }
+      integer i, j /1/, g/2/, h ! { dg-warning "" }
+      integer k, l(3) /2*2,1/   ! { dg-warning "" }
+      real pi /3.1416/, e       ! { dg-warning "" }
 
       if (j /= 1) call abort ()
       if (g /= 2) call abort ()
diff --git a/gcc/testsuite/gfortran.dg/runtime_warning_1.f90 b/gcc/testsuite/gfortran.dg/runtime_warning_1.f90
index 2894136..6e93e3f 100644
--- a/gcc/testsuite/gfortran.dg/runtime_warning_1.f90
+++ b/gcc/testsuite/gfortran.dg/runtime_warning_1.f90
@@ -7,7 +7,7 @@
 !
      character(5) c
      open (42,status='scratch')
-     write (42,'(A,$)') 'abc' ! { dg-warning ".*descriptor" "" }
+     write (42,'(A,$)') 'abc' ! { dg-warning ".*descriptor" }
      write (42,'(A)') 'de'
      rewind (42)
      read (42,'(A)') c
diff --git a/gcc/testsuite/gfortran.dg/underflow.f90 b/gcc/testsuite/gfortran.dg/underflow.f90
index 631fd5a..789b0a5 100644
--- a/gcc/testsuite/gfortran.dg/underflow.f90
+++ b/gcc/testsuite/gfortran.dg/underflow.f90
@@ -1,5 +1,5 @@
 ! { dg-do compile }
 program a
    real x
-   x = tiny(x) / huge(x)  ! { dg-warning "Arithmetic underflow" "" }
+   x = tiny(x) / huge(x)  ! { dg-warning "Arithmetic underflow" }
 end program a
diff --git a/gcc/testsuite/gnat.dg/specs/integer_value.ads b/gcc/testsuite/gnat.dg/specs/integer_value.ads
index 6e9c1b5..28644cd 100644
--- a/gcc/testsuite/gnat.dg/specs/integer_value.ads
+++ b/gcc/testsuite/gnat.dg/specs/integer_value.ads
@@ -1,5 +1,5 @@
 -- { dg-do compile }
 package Integer_Value is
    X : constant Integer :=
-     Integer'Integer_Value (12.8); -- { dg-error "fixed-point type" "" }
+     Integer'Integer_Value (12.8); -- { dg-error "fixed-point type" }
 end Integer_Value;
diff --git a/gcc/testsuite/obj-c++.dg/fsf-package-0.m b/gcc/testsuite/obj-c++.dg/fsf-package-0.m
index 942c1f4..7436f2f 100644
--- a/gcc/testsuite/obj-c++.dg/fsf-package-0.m
+++ b/gcc/testsuite/obj-c++.dg/fsf-package-0.m
@@ -32,5 +32,5 @@ void foo (void)
   a->v2 = 1;
   a->v3 = [a value] - a->v2;	/* { dg-warning ".v3. is @protected" } */
   a->v4 = a->v3 - 1;		/* { dg-warning ".v4. is @private" } */
-  				/* { dg-warning ".v3. is @protected" "" } */
+  				/* { dg-warning ".v3. is @protected" } */
 }
diff --git a/gcc/testsuite/objc.dg/two-types-1.m b/gcc/testsuite/objc.dg/two-types-1.m
index da902a3..b2370b7 100644
--- a/gcc/testsuite/objc.dg/two-types-1.m
+++ b/gcc/testsuite/objc.dg/two-types-1.m
@@ -3,7 +3,7 @@
 
 @interface foo
 struct f {}
-struct g { int a; }; /* { dg-error "expected ';', identifier or " "" } */
+struct g { int a; }; /* { dg-error "expected ';', identifier or " } */
 
 - (struct f *) a;
 - (struct g *) b;
@@ -11,5 +11,5 @@ struct g { int a; }; /* { dg-error "expected ';', identifier or " "" } */
 
 int f(struct g *x)
 {
-  return x->a; /* { dg-bogus " has no member " "" } */
+  return x->a; /* { dg-bogus " has no member " } */
 }

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite
  2017-04-28  1:35                       ` Tom de Vries
@ 2017-04-28 16:28                         ` Jeff Law
  0 siblings, 0 replies; 21+ messages in thread
From: Jeff Law @ 2017-04-28 16:28 UTC (permalink / raw)
  To: Tom de Vries, Jakub Jelinek
  Cc: Mike Stump, Rainer Orth, Richard Biener, GCC Patches

On 04/27/2017 04:04 PM, Tom de Vries wrote:
> On 04/26/2017 01:57 PM, Jakub Jelinek wrote:
>> I guess those should be decided case by case
>> whether we want relative, absolute or saved line numbers.  If the
>> diagnostic is within the same function or code block as the stuff it is
>> relative to, relative is fine, but if e.g. the messages are just at 
>> the end
>> of file and there are unrelated functions in between, it is not a good 
>> idea
> 
> I've written attached patches:
> - replace absolute linenrs in objc.dg,obj-c++.dg
> - replace absolute linenrs in gfortran.dg
> and tested them on x86_64 with -m64/-m32.
> 
> OK for trunk?
> 
> Thanks,
> - Tom
> 
> 0001-Replace-absolute-linenrs-in-objc.dg-obj-c-.dg.patch
> 
> 
> Replace absolute linenrs in objc.dg,obj-c++.dg
> 
> 2017-04-25  Tom de Vries<tom@codesourcery.com>
> 
> 	* obj-c++.dg/bitfield-1.mm: Replace absolute linenrs.
> 	* obj-c++.dg/bitfield-4.mm: Same.
> 	* obj-c++.dg/bitfield-5.mm: Same.
> 	* obj-c++.dg/exceptions-3.mm: Same.
> 	* obj-c++.dg/exceptions-5.mm: Same.
> 	* obj-c++.dg/method-1.mm: Same.
> 	* obj-c++.dg/method-12.mm: Same.
> 	* obj-c++.dg/method-13.mm: Same.
> 	* obj-c++.dg/method-15.mm: Same.
> 	* obj-c++.dg/method-16.mm: Same.
> 	* obj-c++.dg/property/at-property-18.mm: Same.
> 	* obj-c++.dg/property/at-property-25.mm: Same.
> 	* obj-c++.dg/property/at-property-5.mm: Same.
> 	* obj-c++.dg/property/dynamic-2.mm: Same.
> 	* obj-c++.dg/property/property-neg-3.mm: Same.
> 	* obj-c++.dg/protocol-inheritance-1.mm: Same.
> 	* obj-c++.dg/protocol-inheritance-2.mm: Same.
> 	* obj-c++.dg/syntax-error-1.mm: Same.
> 	* obj-c++.dg/try-catch-13.mm: Same.
> 	* objc.dg/bitfield-4.m: Same.
> 	* objc.dg/class-1.m: Same.
> 	* objc.dg/method-11.m: Same.
> 	* objc.dg/method-6.m: Same.
> 	* objc.dg/method-7.m: Same.
> 	* objc.dg/method-9.m: Same.
> 	* objc.dg/missing-proto-3.m: Same.
> 	* objc.dg/naming-2.m: Same.
> 	* objc.dg/property/at-property-16.m: Same.
> 	* objc.dg/property/at-property-18.m: Same.
> 	* objc.dg/property/at-property-25.m: Same.
> 	* objc.dg/property/at-property-5.m: Same.
> 	* objc.dg/property/dynamic-2.m: Same.
> 	* objc.dg/property/property-neg-3.m: Same.
> 	* objc.dg/protocol-inheritance-1.m: Same.
> 	* objc.dg/protocol-inheritance-2.m: Same.
OK.
jeff

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2017-04-28 15:53 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-23 15:46 [testsuite] Add missing dg-require-effective-target alloca to gcc testsuite Tom de Vries
2017-03-23 16:24 ` Thomas Schwinge
2017-03-23 16:51   ` Tom de Vries
2017-03-23 17:45 ` Mike Stump
2017-03-24  7:46   ` Tom de Vries
2017-03-24 12:43     ` Rainer Orth
2017-03-24 12:44       ` Richard Biener
2017-03-24 12:53         ` Rainer Orth
2017-03-24 13:04           ` Rainer Orth
2017-03-24 17:45             ` Mike Stump
2017-03-27 14:14               ` Tom de Vries
     [not found]                 ` <d453445e-54be-d3b5-cc27-d73bdbcc855d@mentor.com>
2017-04-26 12:40                   ` Tom de Vries
2017-04-26 12:50                     ` Jakub Jelinek
2017-04-27  9:03                       ` Tom de Vries
2017-04-28  8:23                         ` Tom de Vries
2017-04-28 14:31                         ` Tom de Vries
2017-04-28  1:35                       ` Tom de Vries
2017-04-28 16:28                         ` Jeff Law
2017-03-27 13:11       ` Tom de Vries
2017-03-28  8:51 ` Thomas Schwinge
2017-03-28  8:57   ` Tom de Vries

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).