This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[testsuite] fix use of dg-error/dg-warning in many C++ tests


The fix for PR testsuite/25241 for the C++ testsuite, which ties dg-error
to actual error messages and dg-warning to warnings, requires changes to
about 360 tests.  This patch modifies only 61 of those tests and is the
first of a series for the C++ tests.  It changes message checks to use
the appropriate directive, and in many cases checks more of the message
than was checked previously.  Sometimes a single directive was used to
match multiple messages, and those have been broken up into a directive
for each message.

These changes don't change any test results with the current testsuite
framework and are required to allow the tests to continue to pass when
the C++ tests use the stricter versions of dg-error and dg-warning.
The tests that I've checked with a 4.0.x compiler have the same messages
in mainline that they did with that compiler.

C++ and diagnostic maintainers and Manuel, is this OK?

2008-08-26  Janis Johnson  <janis187@us.ibm.com>

	PR testsuite/25241
	* gcc/testsuite/g++.dg/charset/attribute2.c: Replace dg-error with
	dg-warning, or vice versa.
	* gcc/testsuite/g++.dg/conversion/dr195.C: Ditto.
	* gcc/testsuite/g++.dg/cpp0x/variadic60.C: Ditto.
	* gcc/testsuite/g++.dg/expr/cast2.C: Ditto.
	* gcc/testsuite/g++.dg/ext/anon-struct4.C: Ditto.
	* gcc/testsuite/g++.dg/ext/member-attr.C: Ditto.
	* gcc/testsuite/g++.dg/ext/utf-array.C: Ditto.
	* gcc/testsuite/g++.dg/ext/utf-array-short-wchar.C: Ditto.
	* gcc/testsuite/g++.dg/ext/utf-typedef-cxx0x.C: Ditto.
	* gcc/testsuite/g++.dg/ext/visibility/redecl1.C: Ditto.
	* gcc/testsuite/g++.dg/ext/visibility/warn4.C: Ditto.
	* gcc/testsuite/g++.dg/parse/defarg11.C: Ditto.
	* gcc/testsuite/g++.dg/template/error17.C: Ditto.
	* gcc/testsuite/g++.dg/warn/pedantic2.C: Ditto.
	* gcc/testsuite/g++.dg/warn/pr21983.C: Ditto.
	* gcc/testsuite/g++.dg/warn/return-reference2.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.bob/inherit1.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.brendan/crash13.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.brendan/crash17.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.brendan/crash52.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.brendan/crash55.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.brendan/enum7.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.brendan/operators4.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.brendan/template17.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.brendan/warnings1.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.bugs/900205_03.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.bugs/900227_01.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.ext/arrnew.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.ext/attrib4.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.jason/cond.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.jason/operator.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.jason/report.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.law/friend5.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.law/temps1.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.law/union4.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.martin/pure1.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.mike/empty.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.mike/for2.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.mike/misc9.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.mike/p10769b.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.mike/p2855.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.mike/p3060c.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.mike/p700.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.mike/p9732c.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.mike/pmf6.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.mike/warn1.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.mike/warn5.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.niklas/t141.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.other/cast6.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.other/cond5.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.other/conv8.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.other/decl5.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.other/delete2.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.other/delete4.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.other/linkage1.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.other/ptrmem8.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.other/typename1.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.pt/typename14.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.pt/typename4.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.pt/typename5.C: Ditto.
	* gcc/testsuite/g++.old-deja/g++.pt/typename7.C: Ditto.

Index: gcc/testsuite/g++.dg/charset/attribute2.c
===================================================================
--- gcc/testsuite/g++.dg/charset/attribute2.c	(revision 139574)
+++ gcc/testsuite/g++.dg/charset/attribute2.c	(working copy)
@@ -4,5 +4,5 @@
 /* { dg-do compile }
    { dg-require-iconv "IBM1047" }
 */
-int foo __attribute__ ((walrus)); /* { dg-error "walrus" "ignored" } */
+int foo __attribute__ ((walrus)); /* { dg-warning "walrus" "ignored" } */
 char x[] = "foobar";
Index: gcc/testsuite/g++.dg/conversion/dr195.C
===================================================================
--- gcc/testsuite/g++.dg/conversion/dr195.C	(revision 139574)
+++ gcc/testsuite/g++.dg/conversion/dr195.C	(working copy)
@@ -22,8 +22,8 @@ void foo ()
   pv = reinterpret_cast <PV>(pf); // { dg-warning "casting between" "" }
 
   /* the following two might or might not be ok with 195.  */
-  pf = reinterpret_cast <PF>(po); // { dg-error "casting between" "" }
-  po = reinterpret_cast <PO>(pf); // { dg-error "casting between" "" }
+  pf = reinterpret_cast <PF>(po); // { dg-warning "casting between" "" }
+  po = reinterpret_cast <PO>(pf); // { dg-warning "casting between" "" }
 
   /* These will never be ok, as they are implicit.  */
   pv = pf; // { dg-error "invalid conversion" "" }
Index: gcc/testsuite/g++.dg/cpp0x/variadic60.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/variadic60.C	(revision 139574)
+++ gcc/testsuite/g++.dg/cpp0x/variadic60.C	(working copy)
@@ -1 +1 @@
-template<typename... Args> class tuple; // { dg-warning "variadic templates" }
+template<typename... Args> class tuple; // { dg-error "variadic templates" }
Index: gcc/testsuite/g++.dg/expr/cast2.C
===================================================================
--- gcc/testsuite/g++.dg/expr/cast2.C	(revision 139574)
+++ gcc/testsuite/g++.dg/expr/cast2.C	(working copy)
@@ -1,5 +1,5 @@
 void (*p)();
 
 void f() {
-  (void *)p; // { dg-error "" }
+  (void *)p; // { dg-warning "forbids cast" }
 }
Index: gcc/testsuite/g++.dg/ext/anon-struct4.C
===================================================================
--- gcc/testsuite/g++.dg/ext/anon-struct4.C	(revision 139574)
+++ gcc/testsuite/g++.dg/ext/anon-struct4.C	(working copy)
@@ -1,3 +1,4 @@
 // PR c++/14401
 
-struct { struct { int& i ; } bar ; } foo ; // { dg-error "" }
+struct { struct { int& i ; } bar ; } foo ; // { dg-error "uninitialized" "uninit" }
+// { dg-warning "anonymous" "anon" { target *-*-* } 3 }
Index: gcc/testsuite/g++.dg/ext/member-attr.C
===================================================================
--- gcc/testsuite/g++.dg/ext/member-attr.C	(revision 139574)
+++ gcc/testsuite/g++.dg/ext/member-attr.C	(working copy)
@@ -9,6 +9,6 @@
 
 class T {
   public:
-    __attribute__ ((garbage1)) void member1(int) {} /* { dg-error "'garbage1' attribute directive ignored" "" } */
-    void __attribute__ ((garbage2)) member2(int) {} /* { dg-error "'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" "" } */
 };
Index: gcc/testsuite/g++.dg/ext/utf-array.C
===================================================================
--- gcc/testsuite/g++.dg/ext/utf-array.C	(revision 139574)
+++ gcc/testsuite/g++.dg/ext/utf-array.C	(working copy)
@@ -13,9 +13,9 @@ const char16_t	s16_1[]	= u"ab";
 const char16_t	s16_2[]	= U"ab";	/* { dg-error "from incompatible" } */
 const char16_t	s16_3[]	= L"ab";	/* { dg-error "from incompatible" } */
 
-const char16_t	s16_4[0] = u"ab";	/* { dg-warning "chars is too long" } */
-const char16_t	s16_5[1] = u"ab";	/* { dg-warning "chars is too long" } */
-const char16_t	s16_6[2] = u"ab";	/* { dg-warning "chars is too long" } */
+const char16_t	s16_4[0] = u"ab";	/* { dg-error "chars is too long" } */
+const char16_t	s16_5[1] = u"ab";	/* { dg-error "chars is too long" } */
+const char16_t	s16_6[2] = u"ab";	/* { dg-error "chars is too long" } */
 const char16_t	s16_7[3] = u"ab";
 const char16_t	s16_8[4] = u"ab";
 
@@ -24,9 +24,9 @@ const char32_t	s32_1[]	= u"ab";	/* { dg-
 const char32_t	s32_2[]	= U"ab";
 const char32_t	s32_3[]	= L"ab";	/* { dg-error "from incompatible" } */
 
-const char32_t	s32_4[0] = U"ab";	/* { dg-warning "chars is too long" } */
-const char32_t	s32_5[1] = U"ab";	/* { dg-warning "chars is too long" } */
-const char32_t	s32_6[2] = U"ab";	/* { dg-warning "chars is too long" } */
+const char32_t	s32_4[0] = U"ab";	/* { dg-error "chars is too long" } */
+const char32_t	s32_5[1] = U"ab";	/* { dg-error "chars is too long" } */
+const char32_t	s32_6[2] = U"ab";	/* { dg-error "chars is too long" } */
 const char32_t	s32_7[3] = U"ab";
 const char32_t	s32_8[4] = U"ab";
 
Index: gcc/testsuite/g++.dg/ext/utf-array-short-wchar.C
===================================================================
--- gcc/testsuite/g++.dg/ext/utf-array-short-wchar.C	(revision 139574)
+++ gcc/testsuite/g++.dg/ext/utf-array-short-wchar.C	(working copy)
@@ -13,9 +13,9 @@ const char16_t	s16_1[]	= u"ab";
 const char16_t	s16_2[]	= U"ab";	/* { dg-error "from incompatible" } */
 const char16_t	s16_3[]	= L"ab";	/* { dg-error "from incompatible" } */
 
-const char16_t	s16_4[0] = u"ab";	/* { dg-warning "chars is too long" } */
-const char16_t	s16_5[1] = u"ab";	/* { dg-warning "chars is too long" } */
-const char16_t	s16_6[2] = u"ab";	/* { dg-warning "chars is too long" } */
+const char16_t	s16_4[0] = u"ab";	/* { dg-error "chars is too long" } */
+const char16_t	s16_5[1] = u"ab";	/* { dg-error "chars is too long" } */
+const char16_t	s16_6[2] = u"ab";	/* { dg-error "chars is too long" } */
 const char16_t	s16_7[3] = u"ab";
 const char16_t	s16_8[4] = u"ab";
 
@@ -24,9 +24,9 @@ const char32_t	s32_1[]	= u"ab";	/* { dg-
 const char32_t	s32_2[]	= U"ab";
 const char32_t	s32_3[]	= L"ab";	/* { dg-error "from incompatible" } */
 
-const char32_t	s32_4[0] = U"ab";	/* { dg-warning "chars is too long" } */
-const char32_t	s32_5[1] = U"ab";	/* { dg-warning "chars is too long" } */
-const char32_t	s32_6[2] = U"ab";	/* { dg-warning "chars is too long" } */
+const char32_t	s32_4[0] = U"ab";	/* { dg-error "chars is too long" } */
+const char32_t	s32_5[1] = U"ab";	/* { dg-error "chars is too long" } */
+const char32_t	s32_6[2] = U"ab";	/* { dg-error "chars is too long" } */
 const char32_t	s32_7[3] = U"ab";
 const char32_t	s32_8[4] = U"ab";
 
Index: gcc/testsuite/g++.dg/ext/utf-typedef-cxx0x.C
===================================================================
--- gcc/testsuite/g++.dg/ext/utf-typedef-cxx0x.C	(revision 139574)
+++ gcc/testsuite/g++.dg/ext/utf-typedef-cxx0x.C	(working copy)
@@ -1,7 +1,7 @@
 /* Contributed by Kris Van Hees <kris.van.hees@oracle.com> */
-/* Ensure that a typedef to char16_t/char32_t issues a warning in c++0x. */
+/* Ensure that a typedef to char16_t/char32_t issues an error in c++0x. */
 /* { dg-do compile } */
 /* { dg-options "-std=c++0x" } */
 
-typedef short unsigned int	char16_t; /* { dg-warning "redeclaration" } */
-typedef unsigned int		char32_t; /* { dg-warning "redeclaration" } */
+typedef short unsigned int	char16_t; /* { dg-error "redeclaration" } */
+typedef unsigned int		char32_t; /* { dg-error "redeclaration" } */
Index: gcc/testsuite/g++.dg/ext/visibility/redecl1.C
===================================================================
--- gcc/testsuite/g++.dg/ext/visibility/redecl1.C	(revision 139574)
+++ gcc/testsuite/g++.dg/ext/visibility/redecl1.C	(working copy)
@@ -1,7 +1,7 @@
 // Test that we complain about redeclaration with different visibility
 
 struct __attribute((visibility("hidden"))) B;
-struct __attribute((visibility("default"))) B;	// { dg-warning "visibility" }
+struct __attribute((visibility("default"))) B;	// { dg-error "visibility" }
 
 __attribute ((visibility ("hidden"))) void f();	// { dg-warning "previous" }
 __attribute ((visibility ("default"))) void f(); // { dg-warning "visibility" }
Index: gcc/testsuite/g++.dg/ext/visibility/warn4.C
===================================================================
--- gcc/testsuite/g++.dg/ext/visibility/warn4.C	(revision 139574)
+++ gcc/testsuite/g++.dg/ext/visibility/warn4.C	(working copy)
@@ -1,4 +1,4 @@
-// Error if we try to give an instantiation visibility after it's already
+// Warn if we try to give an instantiation visibility after it's already
 // been instantiated.
 
 // { dg-require-visibility "" }
@@ -7,4 +7,4 @@ template <class T> struct A { void f (T)
 template <class T> void A<T>::f (T) { }
 
 A<double> ad;
-template struct __attribute ((visibility ("hidden"))) A<double>; // { dg-error "already defined" }
+template struct __attribute ((visibility ("hidden"))) A<double>; // { dg-warning "already defined" }
Index: gcc/testsuite/g++.dg/parse/defarg11.C
===================================================================
--- gcc/testsuite/g++.dg/parse/defarg11.C	(revision 139574)
+++ gcc/testsuite/g++.dg/parse/defarg11.C	(working copy)
@@ -4,6 +4,6 @@
 class foo {
 public:
   void operator& (int = 1);  // { dg-error "default argument" }
-  void operator++ (int = 2); // { dg-error "default argument" }
-  void operator-- (int = 3); // { dg-error "default argument" }
+  void operator++ (int = 2); // { dg-warning "default argument" }
+  void operator-- (int = 3); // { dg-warning "default argument" }
 };
Index: gcc/testsuite/g++.dg/template/error17.C
===================================================================
--- gcc/testsuite/g++.dg/template/error17.C	(revision 139574)
+++ gcc/testsuite/g++.dg/template/error17.C	(working copy)
@@ -4,5 +4,7 @@ template <typename T>
 void
 foo()
 {
-  union { struct { }; }; // { dg-error "" }
+  union { struct { }; }; // { dg-error "prohibits anonymous struct" "anon" }
+  // { dg-error "not inside" "not inside" { target *-*-* } 7 }
+  // { dg-warning "no members" "no members" { target *-*-* } 7 }
 }
Index: gcc/testsuite/g++.dg/warn/pedantic2.C
===================================================================
--- gcc/testsuite/g++.dg/warn/pedantic2.C	(revision 139574)
+++ gcc/testsuite/g++.dg/warn/pedantic2.C	(working copy)
@@ -5,6 +5,6 @@ class foo
   foo() {};
   void bar() {};
 
-  foo(int) {};;  // { dg-error "extra" }
-  void bar(int) {};;  // { dg-error "extra" }
+  foo(int) {};;  // { dg-warning "extra" }
+  void bar(int) {};;  // { dg-warning "extra" }
 };
Index: gcc/testsuite/g++.dg/warn/pr21983.C
===================================================================
--- gcc/testsuite/g++.dg/warn/pr21983.C	(revision 139574)
+++ gcc/testsuite/g++.dg/warn/pr21983.C	(working copy)
@@ -4,4 +4,4 @@
 struct B { virtual void foo () = 0; };
 struct D1 : public virtual B { virtual void foo () {} };
 struct D2 : public virtual B { virtual void foo () {} };
-struct D : public D1, public D2 { };	// { dg-warning "no unique final overrider" }
+struct D : public D1, public D2 { };	// { dg-error "no unique final overrider" }
Index: gcc/testsuite/g++.dg/warn/return-reference2.C
===================================================================
--- gcc/testsuite/g++.dg/warn/return-reference2.C	(revision 139574)
+++ gcc/testsuite/g++.dg/warn/return-reference2.C	(working copy)
@@ -10,12 +10,12 @@ public:
 
 int &f()
 {
-  A a;				// { dg-error "local" }
+  A a;				// { dg-warning "local" }
   return a.second;
 }
 
 int &g()
 {
-  int ar[42];			// { dg-error "local" }
+  int ar[42];			// { dg-warning "local" }
   return ar[20];
 }
Index: gcc/testsuite/g++.old-deja/g++.bob/inherit1.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.bob/inherit1.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.bob/inherit1.C	(working copy)
@@ -11,7 +11,8 @@ public:
 
 class B : public A {
 public:
-    char* m1 () { C::m1(); return ""; } // { dg-error "" } 
+    char* m1 () { C::m1(); return ""; } // { dg-error "cannot call" } 
+    // { dg-warning "deprecated" "depr" { target *-*-* } 14 }
 };
 
 int main () {
Index: gcc/testsuite/g++.old-deja/g++.brendan/crash13.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.brendan/crash13.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.brendan/crash13.C	(working copy)
@@ -31,7 +31,7 @@ gen_op Spul_U_axis()
 {
   gen_op U1;
   U1 = Fe();
-} // { dg-error "" } reaches end of non-void function
+} // { dg-warning "no return" } reaches end of non-void function
 
 int
 main () {}
Index: gcc/testsuite/g++.old-deja/g++.brendan/crash17.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.brendan/crash17.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.brendan/crash17.C	(working copy)
@@ -30,6 +30,6 @@ class GnWidget : public GnObject {
     virtual ~GnWidget();
 };
 
-class GnOptionGroup : public GnObject, public GnWidget {// { dg-error "" }  warning
+class GnOptionGroup : public GnObject, public GnWidget {// { dg-warning "inaccessible" }
 };
 
Index: gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.brendan/crash52.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.brendan/crash52.C	(working copy)
@@ -5,9 +5,9 @@
 
 class A {
 public:
-  friend A f(A &a);// { dg-error "" }  ambiguates.*
+  friend A f(A &a);// { dg-error "ambiguates" }
 };
 
-A &f(A &a) {// { dg-error "" }  new decl.*
+A &f(A &a) {// { dg-error "new decl" }
   std::cout << "Blah\n";
-} // { dg-error "no return statement" }
+} // { dg-warning "no return statement" }
Index: gcc/testsuite/g++.old-deja/g++.brendan/crash55.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.brendan/crash55.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.brendan/crash55.C	(working copy)
@@ -4,7 +4,7 @@
 
       int& f(int x)  // { dg-error "new declaration" }
       {
-          int local; // { dg-error "reference to local" }
+          int local; // { dg-warning "reference to local" }
 
           local = x+2;
       
Index: gcc/testsuite/g++.old-deja/g++.brendan/enum7.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.brendan/enum7.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.brendan/enum7.C	(working copy)
@@ -3,5 +3,5 @@
 enum color { red, green, blue, orange, brown };
 
 struct s {
-      enum color      field:2; // { dg-error "" } too small
+      enum color      field:2; // { dg-warning "too small" }
 };
Index: gcc/testsuite/g++.old-deja/g++.brendan/operators4.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.brendan/operators4.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.brendan/operators4.C	(working copy)
@@ -54,11 +54,11 @@ int main ()
 	if (test3 (vp))
 		return fail ();
 	ptr_to_method_of_char p2 = &base::method;
-	vp = (void*) p2; // { dg-error "" } 
+	vp = (void*) p2; // { dg-warning "converting" } 
 	if (test4 (vp))
 		return fail ();
 	ptr_to_method_of_float p3 = &base::method;
-	vp = (void*) p3; // { dg-error "" } 
+	vp = (void*) p3; // { dg-warning "converting" } 
 	if (test5 (vp))
 		return fail ();
 
@@ -83,7 +83,7 @@ int test3 (void* vp)
 int test4 (void* vp)
 {
 	char ch = 'x';
-	ptr_to_method_of_char p = (ptr_to_method_of_char) vp; // { dg-error "" } bad type conversion
+	ptr_to_method_of_char p = (ptr_to_method_of_char) vp; // { dg-error "invalid cast" } bad type conversion
 
 	return ((base_ptr->*p)(ch) !=  9904);
 }
@@ -91,7 +91,7 @@ int test4 (void* vp)
 int test5 (void* vp)
 {
 	float flt = 9.9;
-	ptr_to_method_of_float p = (ptr_to_method_of_float) vp; // { dg-error "" } bad type conversion
+	ptr_to_method_of_float p = (ptr_to_method_of_float) vp; // { dg-error "invalid cast" } bad type conversion
 
 	if ((base_ptr->*p)(flt) !=  9905) {
 		return 1;
Index: gcc/testsuite/g++.old-deja/g++.brendan/template17.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.brendan/template17.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.brendan/template17.C	(working copy)
@@ -8,5 +8,8 @@ public:
     static unsigned sequence_number;
 };
 
-const Regex NDAMName<'L'>::pattern("^[Ll](.*)$",   1);// { dg-error "" }  type/value.*
-unsigned NDAMName<'L'>::sequence_number = 0;// { dg-error "" }  type/value
+const Regex NDAMName<'L'>::pattern("^[Ll](.*)$",   1);// { dg-error "type/value mismatch" "mismatch" }
+// { dg-error "expected a type" "expected" { target *-*-* } 11 }
+// { dg-warning "deprecated" "depr" { target *-*-* } 11 }
+unsigned NDAMName<'L'>::sequence_number = 0;// { dg-error "type/value mismatch" "mismatch" }
+// { dg-error "expected a type" "exp" { target *-*-* } 14 }
Index: gcc/testsuite/g++.old-deja/g++.brendan/warnings1.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.brendan/warnings1.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.brendan/warnings1.C	(working copy)
@@ -2,6 +2,6 @@
 // { dg-options "-Wctor-dtor-privacy" }
 // GROUPS passed warnings
 // there should be a warning about foo only defining private methods
-class foo { // { dg-error "" } .*
+class foo { // { dg-warning "private" }
   int bar();
 };
Index: gcc/testsuite/g++.old-deja/g++.bugs/900205_03.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.bugs/900205_03.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.bugs/900205_03.C	(working copy)
@@ -18,18 +18,18 @@
 struct struct00 { };
 
 int global_function_0 () {
-}					// { dg-error "" } 
+}					// { dg-warning "no return" } 
 
 struct00 global_function_1 () {
-}					// { dg-error "" } 
+}					// { dg-warning "no return" } 
 
 struct struct0 {
 
   int struct0_member_function_0 () {
-  }					// { dg-error "" } 
+  }					// { dg-warning "no return" } 
 
   struct0 struct0_member_function_1 () {
-  }					// { dg-error "" } 
+  }					// { dg-warning "no return" } 
 };
 
 struct struct1 {
@@ -41,9 +41,9 @@ struct struct1 {
 };
 
 int struct1_member_function_0 () {
-}					// { dg-error "" } 
+}					// { dg-warning "no return" } 
 
 struct1 struct1::struct1_member_function_1 () {
-}				        // { dg-error "" } 
+}				        // { dg-warning "no return" } 
 
 int main () { return 0; }
Index: gcc/testsuite/g++.old-deja/g++.bugs/900227_01.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.bugs/900227_01.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.bugs/900227_01.C	(working copy)
@@ -33,7 +33,9 @@
 
 int main ();
 
-short s = (short) &main;	// { dg-warning "" "" { xfail h8*-*-* xstormy16-*-* } } small integer 
-char c = (char) &main;		// { dg-warning "" } small integer
+short s = (short) &main;	// { dg-error "taking address" "addr" { xfail h8*-*-* xstormy16-*-* } }
+// { dg-error "loses precision" "lose" { xfail h8*-*-* xstormy16-*-* } 36 }
+char c = (char) &main;		// { dg-error "taking address" }
+// { dg-error "loses precision" "lose" { target *-*-* } 38 }
 
 int main () { return 0; }
Index: gcc/testsuite/g++.old-deja/g++.ext/arrnew.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.ext/arrnew.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.ext/arrnew.C	(working copy)
@@ -3,5 +3,6 @@
 // PRMS Id: 4992
 
 int *f(){
-  return new int[1] = { 1 };   // { dg-error "" } removed
+  return new int[1] = { 1 };   // { dg-error "lvalue" "err" }
+  // { dg-warning "extended init" "warn" { target *-*-* } 6 }
 }
Index: gcc/testsuite/g++.old-deja/g++.ext/attrib4.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.ext/attrib4.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.ext/attrib4.C	(working copy)
@@ -17,8 +17,11 @@ void PF k (char *, ...) { }
 
 void A::test ()
 {
-  f ("%f", 42);			// { dg-warning "" } 
-  g ("%f", 42);			// { dg-warning "" } 
-  h ("%f", 42);			// { dg-warning "" } 
-  k ("%f", 42);			// { dg-warning "" } 
+  f ("%f", 42);			// { dg-warning "deprecated conversion" "dep" } 
+  // { dg-warning "argument 2" "arg" { target *-*-* } 20 }
+  g ("%f", 42);			// { dg-error "not declared in this scope" } 
+  h ("%f", 42);			// { dg-warning "deprecated conversion" "dep" } 
+  // { dg-warning "argument 2" "arg" { target *-*-* } 23 }
+  k ("%f", 42);			// { dg-warning "deprecated conversion" "dep" } 
+  // { dg-warning "argument 2" "arg" { target *-*-* } 25 }
 }
Index: gcc/testsuite/g++.old-deja/g++.jason/cond.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.jason/cond.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.jason/cond.C	(working copy)
@@ -17,14 +17,14 @@ int main()
       char j;
     }
 
-  while (int i = 0)		// { dg-error "" }
+  while (int i = 0)		// { dg-error "previously" }
     {
-      int i;			// { dg-error "" }
+      int i;			// { dg-error "redeclaration" }
     }
 
-  for (; int i = 0; )		// { dg-error "" }
+  for (; int i = 0; )		// { dg-error "previously" }
     {
-      int i;			// { dg-error "" }
+      int i;			// { dg-error "redeclaration" }
     }
 
   switch (int i = 0)		// { dg-error "" "" { xfail *-*-* } } 
@@ -33,12 +33,14 @@ int main()
       int i;			// { dg-error "" "" { xfail *-*-* } } 
     }
 
-  if (struct A { operator int () { return 1; } } *foo = new A) // { dg-error "" } 
+  if (struct A { operator int () { return 1; } } *foo = new A) // { dg-error "defined" } 
     ;
 
-  A bar;			// { dg-error "" } 
+  A bar;			// { dg-error "not declared" "decl" } 
+  // { dg-error "expected" "exp" { target *-*-* } 39 }
   
-  if (enum A { one, two, three } foo = one) // { dg-error "" } 
+  if (enum A { one, two, three } foo = one) // { dg-error "defined" "def" } 
+  // { dg-error "declared" "decl" { target *-*-* } 42 }
     ;
 
   struct B { operator int () { return 2; } };
@@ -46,10 +48,11 @@ int main()
   if (struct B * foo = new B)
     ;
 
-  if (int f () = 1)		// { dg-error "" } 
+  if (int f () = 1)		// { dg-warning "extern" "extern" } 
+  // { dg-error "is initialized like a variable" "var" { target *-*-* } 51 }
     ;
   
-  if (int a[2] = {1, 2})	// { dg-error "" } 
+  if (int a[2] = {1, 2})	// { dg-error "extended init" } 
     ;
 
 }
Index: gcc/testsuite/g++.old-deja/g++.jason/operator.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.jason/operator.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.jason/operator.C	(working copy)
@@ -5,11 +5,11 @@
 typedef __SIZE_TYPE__ size_t;
 
 struct A {
-  int operator?:(int a, int b);	   // { dg-warning "" } 
-  static int operator()(int a);	   // { dg-error "" } must be nonstatic
-  static int operator+(A,A);	   // { dg-error "" } must be nonstatic
-  int operator+(int a, int b = 1); // { dg-error "" } two errors on this line
-  int operator++(char);		   // { dg-error "" } must take 'int'
+  int operator?:(int a, int b);	   // { dg-error "expected type-specifier" } 
+  static int operator()(int a);	   // { dg-error "must be a nonstatic member" }
+  static int operator+(A,A);	   // { dg-error "either a non-static member" } 
+  int operator+(int a, int b = 1); // { dg-error "either zero or one" }
+  int operator++(char);		   // { dg-error "must take 'int'" } 
   void operator delete (void *);   
   void operator delete (void *, unsigned long);	
 };
@@ -23,9 +23,10 @@ struct B {
   B * operator->();
 };
 
-int operator-(int a, int b);	// { dg-error "" } no class argument
+int operator-(int a, int b);	// { dg-error "argument of class or" }
 
-void * operator new (A a);	// { dg-error "" } invalid first argument
-void operator delete (A a);	// { dg-error "" } ditto
+void * operator new (A a);	// { dg-error "first parameter" }
+void operator delete (A a);	// { dg-error "first parameter" }
 
-char * operator char * (int);	// { dg-error "" } return value, nonmember
+char * operator char * (int);	// { dg-error "return type" "ret" }
+// { dg-error "nonstatic member function" "mem" { target *-*-* } 31 }
Index: gcc/testsuite/g++.old-deja/g++.jason/report.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.jason/report.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.jason/report.C	(working copy)
@@ -56,7 +56,7 @@ bar2 baz (X::Y y)	        // { dg-error 
   bar2 wa [5];
   wa[0] = baz(f);
   undef2 (1); // { dg-error "" } implicit declaration
-}				// { dg-error "no return statement" }
+}				// { dg-warning "no return statement" }
 
 int ninny ()
 {
@@ -71,4 +71,4 @@ int ninny ()
 int darg (char X::*p)
 {
    undef3 (1); // { dg-error "" } implicit declaration
-}				// { dg-error "no return statement" }
+}				// { dg-warning "no return statement" }
Index: gcc/testsuite/g++.old-deja/g++.law/friend5.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.law/friend5.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.law/friend5.C	(working copy)
@@ -16,10 +16,10 @@
         int good_friend(int)
         {
             obj.parts = 0;
-        } // { dg-error "" } non-void
+        } // { dg-warning "non-void" }
 
         int bad_friend()
         {
             obj.parts = 0;
-        } // { dg-error "" } non-void
+        } // { dg-warning "non-void" }
 
Index: gcc/testsuite/g++.old-deja/g++.law/temps1.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.law/temps1.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.law/temps1.C	(working copy)
@@ -15,4 +15,5 @@ struct cookie
   cookie ( foo * x) { v=x; }
 };
 
-cookie cat(&foo("apabepa"));// { dg-error "" } .*
+cookie cat(&foo("apabepa"));// { dg-warning "deprecated conversion" "dep" }
+// { dg-warning "taking address of temporary" "add" { target *-*-* } 18 }
Index: gcc/testsuite/g++.old-deja/g++.law/union4.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.law/union4.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.law/union4.C	(working copy)
@@ -10,4 +10,4 @@ static union {
         struct SS {
                 int ss;
         };
-};// { dg-error "" } .*
+};// { dg-warning "no members" }
Index: gcc/testsuite/g++.old-deja/g++.martin/pure1.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.martin/pure1.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.martin/pure1.C	(working copy)
@@ -3,6 +3,6 @@ class A
 {
   public:
     virtual void f(void) = 0; // pure virtual function.
-     A() {f();}               // { dg-error "" } called in a constructor
-    ~A() {f();}               // { dg-error "" } called in a destructor
+     A() {f();}               // { dg-warning "const" } called in a constructor
+    ~A() {f();}               // { dg-warning "destr" } called in a destructor
 };
Index: gcc/testsuite/g++.old-deja/g++.mike/empty.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.mike/empty.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.mike/empty.C	(working copy)
@@ -3,10 +3,10 @@
 #define NOPE
 
 void foo() {
-  while (1); /* { dg-error "suggest a space before " } */
+  while (1); /* { dg-warning "suggest a space before " } */
     {
     }
-  for (;;); /* { dg-error "suggest a space before " } */
+  for (;;); /* { dg-warning "suggest a space before " } */
     {
     }
   while (1)
Index: gcc/testsuite/g++.old-deja/g++.mike/for2.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.mike/for2.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.mike/for2.C	(working copy)
@@ -3,17 +3,20 @@
 void foo() {
   for (class C {};;)
     ;
-  C c;		// { dg-error "" } 
+  C c;		// { dg-error "declared" "decl" } 
+  // { dg-error "expected" "exp" { target *-*-* } 6 }
 }
 
 void bar() {
   for (enum E {num};;)
     ;
-  E e;		// { dg-error "" } 
+  E e;		// { dg-error "declared" "decl" } 
+  // { dg-error "expected" "exp" { target *-*-* } 13 }
 }
 
 void bee () {
   int i = 0;
-  for (int fun() = 0; i != 2; ++i) {	// { dg-error "" } 
+  for (int fun() = 0; i != 2; ++i) {	// { dg-warning "extern" "extern" }
+  // { dg-error "initialized" "init" { target *-*-* } 19 }
   }
 }
Index: gcc/testsuite/g++.old-deja/g++.mike/misc9.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.mike/misc9.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.mike/misc9.C	(working copy)
@@ -3,11 +3,11 @@
 // GROUPS passed qualifiers
 class bee {
  public:
-  int bee::bar;		// { dg-warning "" } there is an extra bee:: here
+  int bee::bar;		// { dg-error "extra" } there is an extra bee:: here
 };
 
 class foo {
  public:
-  int bee::bar;		// { dg-error "" } you cannot do this
+  int bee::bar;		// { dg-error "not derived" } you cannot do this
     int me();
 };
Index: gcc/testsuite/g++.old-deja/g++.mike/p10769b.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.mike/p10769b.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.mike/p10769b.C	(working copy)
@@ -17,10 +17,11 @@ public:
 
 void A::main() {
   void (B::*mPtrB)(B*);
-  (*(void (*)(A*))PMF2PF(mPtrB))(&b);	// { dg-error "" } 
+  (*(void (*)(A*))PMF2PF(mPtrB))(&b);	// { dg-error "argument passing" } 
+  // { dg-warning "convert" "warn" { target *-*-* } 20 }
 }
 
 int main() {
   void (A::*mPtr)() = &A::f1a;
-  (*(void (*)(A*))PMF2PF(mPtr))(&a);	// { dg-error "" } 
+  (*(void (*)(A*))PMF2PF(mPtr))(&a);	// { dg-warning "convert" } 
 }
Index: gcc/testsuite/g++.old-deja/g++.mike/p2855.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.mike/p2855.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.mike/p2855.C	(working copy)
@@ -16,6 +16,6 @@ Ctest::operator const char *() const
 int main()
 {
   Ctest obj;
-  char* temp = (char *)obj;		// { dg-warning "" } 
+  char* temp = (char *)obj;		// { dg-error "invalid cast" } 
   temp[0] = '\0';
 }
Index: gcc/testsuite/g++.old-deja/g++.mike/p3060c.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.mike/p3060c.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.mike/p3060c.C	(working copy)
@@ -11,7 +11,7 @@ class Foo
   operator int ();
 };
 
-int Foo::operator int() { return x; } // { dg-warning "" } can't specify return type
+int Foo::operator int() { return x; } // { dg-error "return" } can't specify return type
 
 Foo foo(10, 11);
 
Index: gcc/testsuite/g++.old-deja/g++.mike/p700.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.mike/p700.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.mike/p700.C	(working copy)
@@ -223,7 +223,7 @@ inline  void  Int::operator >>=(const in
 { rep >>= b;  ; }
 
 
-inline  int& operator  = (int& a,  const Int &   b)	// { dg-warning "" } 
+inline  int& operator  = (int& a,  const Int &   b)	// { dg-error "" } 
 { a = b.Int::val(); return a;}
 inline  int& operator += (int& a,  const Int &   b)
 { a += b.Int::val(); return a; }
@@ -562,7 +562,7 @@ inline  void  Char::operator >>=(const c
 { rep >>= b;  ; }
 
 
-inline  char& operator  = (char& a,  const Char &   b)	// { dg-warning "" } 
+inline  char& operator  = (char& a,  const Char &   b)	// { dg-error "" } 
 { a = b.Char::val(); return a;}
 inline  char& operator += (char& a,  const Char &   b)
 { a += b.Char::val(); return a; }
Index: gcc/testsuite/g++.old-deja/g++.mike/p9732c.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.mike/p9732c.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.mike/p9732c.C	(working copy)
@@ -2,4 +2,4 @@
 // prms-id: 9732
 
 struct foo {};
-foo& x() { return foo(); }	// { dg-warning "" } 
+foo& x() { return foo(); }	// { dg-error "invalid init" } 
Index: gcc/testsuite/g++.old-deja/g++.mike/pmf6.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.mike/pmf6.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.mike/pmf6.C	(working copy)
@@ -5,9 +5,9 @@ class S {
 public:
   void (S::*pmf)();
   void foo() {
-    pmf();			// { dg-warning "" } 
+    pmf();			// { dg-error "pointer-to-member" } 
   }
   static void foo1(S* sp) {
-    (sp->pmf)();		// { dg-error "" } 
+    (sp->pmf)();		// { dg-error "pointer-to-member" } 
   }
 };
Index: gcc/testsuite/g++.old-deja/g++.mike/warn1.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.mike/warn1.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.mike/warn1.C	(working copy)
@@ -9,6 +9,6 @@ int *pp=&i;
 void foo() { }
 int main()
 {
- charptr(*pp)++;	// { dg-warning "" } 
+ charptr(*pp)++;	// { dg-error "lvalue" } 
  return 0;
 }
Index: gcc/testsuite/g++.old-deja/g++.mike/warn5.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.mike/warn5.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.mike/warn5.C	(working copy)
@@ -12,10 +12,10 @@ struct A {
 
 typedef void (A::*pmf)();
 
-static int mememe = &A::foo - &A::bar;	// { dg-warning "" } 
-pmf b = &A::foo-1;	// { dg-warning "" } 
+static int mememe = &A::foo - &A::bar;	// { dg-error "invalid operands" } 
+pmf b = &A::foo-1;	// { dg-error "invalid operands" } 
 
 int main() {
     double y;
-    y=X(Y-Z);   // { dg-warning "" } 
+    y=X(Y-Z);   // { dg-error "pointer to a function" } 
 }
Index: gcc/testsuite/g++.old-deja/g++.niklas/t141.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.niklas/t141.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.niklas/t141.C	(working copy)
@@ -2,5 +2,5 @@
 // { dg-options "-Wshadow" }
 // GROUPS passed niklas scoping ARM
 class X { X (int); };
-void X (int);// { dg-error "" } .*hides constructor.*
+void X (int);// { dg-warning "hides constructor" }
 void f () { X (1); }
Index: gcc/testsuite/g++.old-deja/g++.other/cast6.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.other/cast6.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.other/cast6.C	(working copy)
@@ -41,16 +41,16 @@ int main ()
 {
   {
     foofPtr fp = &foo::b;
-    barfPtr bp = static_cast <barfPtr> (fp);    // { dg-error "" } invalid static_cast
-    foofPtr fp2 = static_cast <foofPtr> (bp);   // { dg-error "" } invalid static_cast
-    foofPtr fp3 = bp;                           // { dg-error "" } cannot convert
-    fp3 = (foofPtr)bp;                          // { dg-warning "" } via virtual base
+    barfPtr bp = static_cast <barfPtr> (fp);    // { dg-error "via virtual base" } invalid static_cast
+    foofPtr fp2 = static_cast <foofPtr> (bp);   // { dg-error "via virtual base" } invalid static_cast
+    foofPtr fp3 = bp;                           // { dg-error "via virtual base" } cannot convert
+    fp3 = (foofPtr)bp;                          // { dg-error "via virtual base" } via virtual base
     
     foomPtr fmp = &foo::m;
-    barmPtr bmp = static_cast <barmPtr> (fmp);  // { dg-error "" } invalid static_cast
-    foomPtr fmp2 = static_cast <foomPtr> (bmp); // { dg-error "" } invalid static_cast
-    foomPtr fmp3 = bmp;                         // { dg-error "" } cannot convert
-    fmp3 = (foomPtr)bmp;                        // { dg-warning "" } via virtual base
+    barmPtr bmp = static_cast <barmPtr> (fmp);  // { dg-error "via virtual base" } invalid static_cast
+    foomPtr fmp2 = static_cast <foomPtr> (bmp); // { dg-error "via virtual base" } invalid static_cast
+    foomPtr fmp3 = bmp;                         // { dg-error "via virtual base" } cannot convert
+    fmp3 = (foomPtr)bmp;                        // { dg-error "via virtual base" } via virtual base
   }
   
   return 0;
Index: gcc/testsuite/g++.old-deja/g++.other/cond5.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.other/cond5.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.other/cond5.C	(working copy)
@@ -22,9 +22,9 @@ void fn(int i)
   double d;
   int j;
 
-  j = (i ? e1 : e2);    // { dg-warning "" } mismatch
-  d = (i ? e1 : 1.0);   // { dg-warning "" } mismatch
-  d = (i ? 1.0 : e2);   // { dg-warning "" } mismatch
+  j = (i ? e1 : e2);    // { dg-warning "mismatch" }
+  d = (i ? e1 : 1.0);   // { dg-warning "non-enumeral" }
+  d = (i ? 1.0 : e2);   // { dg-warning "non-enumeral" }
   E1 e = (i ? e1 : e1); // ok
   j = (i ? 1 : e2);     // ok
   j = (i ? e1 : 1);     // ok
@@ -35,11 +35,11 @@ void fn(int i)
   (i ? throw X() : throw X());  // ok, void
   
   (i ? i : j) = 1; // ok, int &
-  (i ? throw X() : j) = 1;    // { dg-error "" } non lvalue
-  (i ? j : throw X()) = 1;    // { dg-error "" } non lvalue
-  (i ? throw X() : throw X()) = 1;  // { dg-error "" } invalid use of void
+  (i ? throw X() : j) = 1;    // { dg-error "lvalue" }
+  (i ? j : throw X()) = 1;    // { dg-error "lvalue" }
+  (i ? throw X() : throw X()) = 1;  // { dg-error "lvalue" }
   
-  (i ? (void)1 : i++);        // { dg-warning "" } not a throw
-  (i ? i++ : (void)1);        // { dg-warning "" } not a throw
+  (i ? (void)1 : i++);        // { dg-error "throw-expression" }
+  (i ? i++ : (void)1);        // { dg-error "throw-expression" }
   
 }
Index: gcc/testsuite/g++.old-deja/g++.other/conv8.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.other/conv8.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.other/conv8.C	(working copy)
@@ -27,5 +27,5 @@ void foo::a()
 {
     typedef void(foo::*t)();
     t c = & foo::b;
-    d = (T) c;			// { dg-warning "" } pointer to member cast
+    d = (T) c;			// { dg-error "pointer to member" }
 }
Index: gcc/testsuite/g++.old-deja/g++.other/decl5.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.other/decl5.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.other/decl5.C	(working copy)
@@ -8,40 +8,41 @@
 
 
 struct A {
-  int A::fn();        // { dg-warning "" } extra qualification
-  int A::m;           // { dg-warning "" } extra qualification
+  int A::fn();        // { dg-error "extra qualification" } 
+  int A::m;           // { dg-error "extra qualification" } 
   struct e;
-  struct A::e {int i;}; // { dg-warning "" } extra qualification
-  struct A::expand {  // { dg-warning "" } extra qualification
+  struct A::e {int i;}; // { dg-error "extra qualification" "qual" } 
+  // { dg-error "anonymous struct" "anon" { target *-*-* } 14 }
+  struct A::expand {  // { dg-error "qualified name" } 
   int m;
   };
   struct Z;
-  expand me;          // { dg-error "error: 'expand' does not name a type" }
+  expand me;          // { dg-error "'expand' does not name a type" }
   void foo(struct A::e);
-  void foo(struct A::z);  // { dg-warning "" } extra qualification
+  void foo(struct A::z);  // { dg-error "does not name a type" }
 };
 
 struct Q;
 struct B {
-  struct A::fink {    // { dg-error "" } no such member
+  struct A::fink {    // { dg-error "does not name a class before" }
   int m;
   };
-  struct A::Z {       // { dg-error "" } A::Z not a member of B
+  struct A::Z {       // { dg-error "does not enclose" } A::Z not a member of B
     int m;
   };
   int m;
   int n;
-  struct ::Q {        // { dg-error "" } ::Q not a member of B
+  struct ::Q {        // { dg-error "global qual" } ::Q not a member of B
     int m;
   };
-  int A::fn() {       // { dg-error "" } A::fn not a member of B
+  int A::fn() {       // { dg-error "cannot define member" } A::fn not a member of B
     return 0;
   }
   void fn(struct ::Q &);
-  void foo(struct A::y);  // { dg-error "" } no such member
+  void foo(struct A::y);  // { dg-error "does not name a type" } no such member
 };
 
-struct ::C {          // { dg-warning "" } extra qualification
+struct ::C {          // { dg-error "invalid before" } extra qualification
   int i;
 };
 
@@ -52,26 +53,26 @@ namespace N {
 
 namespace NMS
 {
-  void NMS::fn();     // { dg-warning "" "" } extra qualification
-  int NMS::i;         // { dg-warning "" "" } extra qualification
-  struct NMS::D {     // { dg-warning "" } extra qualification
+  void NMS::fn();     // { dg-error "explicit qual" }
+  int NMS::i;         // { dg-error "explicit qual" }
+  struct NMS::D {     // { dg-error "does not name a class" }
     int i;
   };
-  struct N::E {       // { dg-error "" } no such type
+  struct N::E {       // { dg-error "does not name a class" } no such type
     int i;
   };
-  struct ::F {        // { dg-error "" } no such type
+  struct ::F {        // { dg-error "global qual" } no such type
     int i;
   };
-  int N::fn() {       // { dg-error "" } N::fn not a member of NMS
+  int N::fn() {       // { dg-error "namespace" } N::fn not a member of NMS
     return 0;
   }
-  struct N::F {       // { dg-error "" } N::F not a member of NMS
+  struct N::F {       // { dg-error "namespace" } N::F not a member of NMS
     int i;
   };
 }
 
-NMS::D thing;         // { dg-error "error: 'D' in namespace 'NMS' does not name a type" }
+NMS::D thing;         // { dg-error "'D' in namespace 'NMS' does not name a type" }
 void NMS::fn()
 {
   i = 3;
Index: gcc/testsuite/g++.old-deja/g++.other/delete2.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.other/delete2.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.other/delete2.C	(working copy)
@@ -8,6 +8,6 @@ void bar(foo a) {
   delete a; // should be accepted
   delete[] a; // should be accepted
   char b[1];
-  delete b; // { dg-error "" } expecting pointer type
-  delete[] b; // { dg-error "" } expecting pointer type
+  delete b; // { dg-warning "deleting array" } expecting pointer type
+  delete[] b; // { dg-warning "deleting array" } expecting pointer type
 }
Index: gcc/testsuite/g++.old-deja/g++.other/delete4.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.other/delete4.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.other/delete4.C	(working copy)
@@ -13,22 +13,22 @@ typedef __SIZE_TYPE__ size_t;
 
 void *operator new(size_t)
 {
-  return 0; // { dg-error "" } cannot return NULL
+  return 0; // { dg-warning "NULL" } cannot return NULL
 }
 void *operator new[](size_t)
 {
-  return 0; // { dg-error "" } cannot return NULL
+  return 0; // { dg-warning "NULL" } cannot return NULL
 }
 
 struct X
 {
   void *operator new(size_t)
   {
-    return 0; // { dg-error "" } cannot return NULL
+    return 0; // { dg-warning "NULL" } cannot return NULL
   }
   void *operator new[](size_t)
   {
-    return 0; // { dg-error "" } cannot return NULL
+    return 0; // { dg-warning "NULL" } cannot return NULL
   }
 };
 
Index: gcc/testsuite/g++.old-deja/g++.other/linkage1.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.other/linkage1.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.other/linkage1.C	(working copy)
@@ -4,12 +4,12 @@ typedef struct {
 } *p;
 
 void f (p) { }			// { dg-error "uses anonymous type" }
-p q;				// { dg-error "uses anonymous type" } 
+p q;				// { dg-warning "uses anonymous type" } 
 
 int main()
 {
-  extern p j;			// { dg-error "uses anonymous type" }
+  extern p j;			// { dg-warning "uses anonymous type" }
   struct A { int j; };
-  extern A a;			// { dg-error "uses local type" }
+  extern A a;			// { dg-warning "uses local type" }
   extern void f (A);		// { dg-error "uses local type" }
 }
Index: gcc/testsuite/g++.old-deja/g++.other/ptrmem8.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.other/ptrmem8.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.other/ptrmem8.C	(working copy)
@@ -35,8 +35,8 @@ typedef int foo::*foomPtr;
 int main ()
 {
   foofPtr fp = &foo::b;
-  barfPtr bp = (barfPtr)fp;         // { dg-warning "" } pointer to member
-  foofPtr fp2 = (foofPtr)bp;        // { dg-warning "" } pointer to member
+  barfPtr bp = (barfPtr)fp;         // { dg-error "pointer to member" }
+  foofPtr fp2 = (foofPtr)bp;        // { dg-error "pointer to member" } 
   
   if (fp2 != fp)
     return 1;
@@ -51,8 +51,8 @@ int main ()
   fobj.m = 78;
   
   foomPtr fmp = &foo::m;
-  barmPtr bmp = (barmPtr)fmp;          // { dg-warning "" } pointer to member
-  foomPtr fmp2 = (foomPtr)bmp;         // { dg-warning "" } pointer to member
+  barmPtr bmp = (barmPtr)fmp;          // { dg-error "pointer to member" } 
+  foomPtr fmp2 = (foomPtr)bmp;         // { dg-error "pointer to member" } 
   bar *bptr = &fobj;
   
   if (fmp != fmp2)
Index: gcc/testsuite/g++.old-deja/g++.other/typename1.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.other/typename1.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.other/typename1.C	(working copy)
@@ -13,5 +13,5 @@ public:
 template<class T>
 void f()
 {
-  Vector<T>::iterator i = 0; // { dg-warning "" } missing typename
+  Vector<T>::iterator i = 0; // { dg-error "expected" } missing typename
 }
Index: gcc/testsuite/g++.old-deja/g++.pt/typename14.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.pt/typename14.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.pt/typename14.C	(working copy)
@@ -10,6 +10,6 @@ template <class T>
 struct S : public B<T>
 {
   struct I {
-    void f(X x);   // { dg-warning "" } implicit typename
+    void f(X x);   // { dg-error "'X' has not been declared" } implicit typename
   };
 };
Index: gcc/testsuite/g++.old-deja/g++.pt/typename4.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.pt/typename4.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.pt/typename4.C	(working copy)
@@ -17,10 +17,10 @@ struct B : public A<U>
 template <class U>
 struct C : public B<U>
 {
-  A_Type Func(); // { dg-warning "" } implicit typename
+  A_Type Func(); // { dg-error "does not name a type" } implicit typename
 };
 
 
 template <class U>
-C<U>::A_Type C<U>::Func() { // { dg-warning "" } implicit typename
+C<U>::A_Type C<U>::Func() { // { dg-error "expected" } implicit typename
 }
Index: gcc/testsuite/g++.old-deja/g++.pt/typename5.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.pt/typename5.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.pt/typename5.C	(working copy)
@@ -17,10 +17,11 @@ struct B : public A<U>
 template <class U>
 struct C : public B<U>
 {
-  void Func(A_Type);  // { dg-warning "" } implicit typename
+  void Func(A_Type);  // { dg-error "has not been declared" } implicit typename
 };
 
 
 template <class U>
-void C<U>::Func(A_Type) { // { dg-warning "" } implicit typename
+void C<U>::Func(A_Type) { // { dg-error "declared void" "void" } implicit typename
+// { dg-error "not declared" "decl" { target *-*-* } 25 }
 }
Index: gcc/testsuite/g++.old-deja/g++.pt/typename7.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.pt/typename7.C	(revision 139574)
+++ gcc/testsuite/g++.old-deja/g++.pt/typename7.C	(working copy)
@@ -15,6 +15,8 @@ template <class T>
 struct D : public A <C <T> > {
   void f ()
     {
-      B* new_entries = (B *) 0;  // { dg-warning "" } implicit typename
+      B* new_entries = (B *) 0;  // { dg-error "'B' was not declared in this scope" "B" }
+      // { dg-error "'new_entries' was not declared in this scope" "new_entries" { target *-*-* } 18 }
+      // { dg-error "expected" "exp" { target *-*-* } 18 }
     }
 };



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]