Patchwork ObjC++: patch fixing the Objective-C++ testsuite

login
register
mail settings
Submitter Nicola Pero
Date Jan. 12, 2011, 12:33 a.m.
Message ID <1294792403.797310642@192.168.4.58>
Download mbox | patch
Permalink /patch/78495/
State New
Headers show

Comments

Nicola Pero - Jan. 12, 2011, 12:33 a.m.
This patch fixes the problems with the Objective-C++ testsuite.

One effect of the fix is that dg-error, dg-warning and dg-message now correctly
match different types of compiler messages - unfortunately because this used to
be broken, many testcases had been committed which used dg-error to match a warning
or vice versa; so after fixing the testsuite I had to fix many testcases too. ;-)

Anyway, it now all seems to work. :-)

Ok to commit ?

Thanks
Mike Stump - Jan. 12, 2011, 12:51 a.m.
On Jan 11, 2011, at 4:33 PM, Nicola Pero wrote:
> This patch fixes the problems with the Objective-C++ testsuite.

> Ok to commit ?

Ok with one change, please use Likewise instead of Same change, as that is the canonical spelling.  Could you watch Geoff's regress tester and fix any follow on from it...

Patch

Index: lib/obj-c++.exp
===================================================================
--- lib/obj-c++.exp     (revision 168682)
+++ lib/obj-c++.exp     (working copy)
@@ -211,6 +211,8 @@  proc obj-c++_init { args } {
     global OBJCXX_UNDER_TEST
     global TESTING_IN_BUILD_TREE
     global target_triplet
+    global gcc_warning_prefix
+    global gcc_error_prefix
 
     if ![info exists OBJCXX_UNDER_TEST] then {
        if [info exists TOOL_EXECUTABLE] {
@@ -265,6 +267,9 @@  proc obj-c++_init { args } {
     # error-message parsing machinery.
     lappend ALWAYS_OBJCXXFLAGS "additional_flags=-fmessage-length=0"
 
+    set gcc_warning_prefix "warning:"
+    set gcc_error_prefix "error:"
+
     if { [string match "*-*-darwin*" $target_triplet] } {
        lappend ALWAYS_OBJCXXFLAGS "ldflags=-multiply_defined suppress"
     }
Index: ChangeLog
===================================================================
--- ChangeLog   (revision 168682)
+++ ChangeLog   (working copy)
@@ -1,3 +1,53 @@ 
+2011-01-12  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       Fixed the Objective-C++ testsuite and updated all tests.
+       * lib/obj-c++.exp (obj-c++_init): Declare and set
+       gcc_warning_prefix and gcc_error_prefix.        
+       * obj-c++.dg/attributes/categ-attribute-2.mm: Fixed usage of
+       'dg-warning', 'dg-message' and 'dg-error'.
+       * obj-c++.dg/class-extension-3.mm: Same change.
+       * obj-c++.dg/class-protocol-1.mm: Same change.
+       * obj-c++.dg/encode-7.mm: Same change.
+       * obj-c++.dg/exceptions-3.mm: Same change.
+       * obj-c++.dg/exceptions-5.mm: Same change.      
+       * obj-c++.dg/method-12.mm: Same change.
+       * obj-c++.dg/method-13.mm: Same change.
+       * obj-c++.dg/method-15.mm: Same change.
+       * obj-c++.dg/method-16.mm: Same change.
+       * obj-c++.dg/method-4.mm: Same change.
+       * obj-c++.dg/method-8.mm: Same change.
+       * obj-c++.dg/method-conflict-1.mm: Same change.
+       * obj-c++.dg/method-conflict-2.mm: Same change.
+       * obj-c++.dg/method-conflict-3.mm: Same change. Also, removed
+       FIXME and uncommented second part of the testcase now that the
+       testsuite works correctly.
+       * obj-c++.dg/method-conflict-4.mm: Same change.  Also, removed
+       FIXME and uncommented second part of the testcase now that the
+       testsuite works correctly.
+       * obj-c++.dg/private-1.mm: Same change. 
+       * obj-c++.dg/proto-lossage-4.mm: Same change.
+       * obj-c++.dg/syntax-error-7.mm: Same change.
+       * obj-c++.dg/warn5.mm: Same change.
+
+       * obj-c++.dg/property/at-property-14.mm: Same change.
+       * obj-c++.dg/property/at-property-16.mm: Same change, and removed
+       FIXME.  
+       * obj-c++.dg/property/at-property-18.mm: Same change.
+       * obj-c++.dg/property/at-property-20.mm: Same change, and removed
+       FIXME.
+       * obj-c++.dg/property/at-property-21.mm: Same change.
+       * obj-c++.dg/property/at-property-28.mm: Same change.
+       * obj-c++.dg/property/at-property-5.mm: Same change.
+       * obj-c++.dg/property/dynamic-2.mm: Same change.
+       * obj-c++.dg/property/property-neg-3.mm: Same change.
+       * obj-c++.dg/property/synthesize-11.mm: Same change.
+       * obj-c++.dg/property/synthesize-6.mm: Same change.
+       * obj-c++.dg/property/synthesize-8.mm: Same change.
+       * obj-c++.dg/property/synthesize-9.mm: Same change.
+       * obj-c++.dg/tls/diag-5.mm: Same change.
+       * obj-c++.dg/ivar-invalid-type-1.mm: Removed FIXME and uncommented
+       dg-error, now matched correctly.
+       
 2011-01-11  Dodji Seketeli  <dodji@redhat.com>
 
        PR debug/46955
Index: obj-c++.dg/private-1.mm
===================================================================
--- obj-c++.dg/private-1.mm     (revision 168682)
+++ obj-c++.dg/private-1.mm     (working copy)
@@ -49,8 +49,8 @@  int main (void)
     {
       int access;
 
-      access = m->_private;   /* { dg-error "is @private" }  */
-      access = m->_protected; /* { dg-error "is @protected" }  */
+      access = m->_private;   /* { dg-warning "is @private" }  */
+      access = m->_protected; /* { dg-warning "is @protected" }  */
       access = m->_public;    /* Ok  */
     }
 
Index: obj-c++.dg/method-conflict-3.mm
===================================================================
--- obj-c++.dg/method-conflict-3.mm     (revision 168682)
+++ obj-c++.dg/method-conflict-3.mm     (working copy)
@@ -27,39 +27,37 @@ 
 - (void) method6: (id <A, A, B, B, C, C>)x;
 - (void) method6: (id <C, A, B>)x; /* Ok */
 
-- (void) method7: (id)x; /* { dg-warning "previous declaration" } */
+- (void) method7: (id)x; /* { dg-message "previous declaration" } */
 - (void) method7: (id <A>)x; /* { dg-error "duplicate declaration" } */
 
-- (void) method8: (id <A>)x; /* { dg-warning "previous declaration" } */
+- (void) method8: (id <A>)x; /* { dg-message "previous declaration" } */
 - (void) method8: (id)x; /* { dg-error "duplicate declaration" } */
 
-- (void) method9: (id <A>)x; /* { dg-warning "previous declaration" } */
+- (void) method9: (id <A>)x; /* { dg-message "previous declaration" } */
 - (void) method9: (id <B>)x; /* { dg-error "duplicate declaration" } */
 
-- (void) methodA: (id <A>)x; /* { dg-warning "previous declaration" } */
+- (void) methodA: (id <A>)x; /* { dg-message "previous declaration" } */
 - (void) methodA: (id <A, B>)x; /* { dg-error "duplicate declaration" } */
 
-/* FIXME: Bug in the testsuite - the following are done Ok by the compiler, but
-   the testsuite barfs so we have to comment out the tests.  */
-/* - (void) methodB: (id <A, B>)x; dg-warning "previous declaration" */
-/* - (void) methodB: (id <A>)x; dg-error "duplicate declaration" */
+- (void) methodB: (id <A, B>)x; /* { dg-message "previous declaration" } */
+- (void) methodB: (id <A>)x; /* { dg-error "duplicate declaration" } */
 
-/* - (void) methodC: (id <A, B, C>)x;  dg-warning "previous declaration"  */
-/* - (void) methodC: (id <A, B>)x;  dg-error "duplicate declaration"  */
+- (void) methodC: (id <A, B, C>)x; /* { dg-message "previous declaration" } */
+- (void) methodC: (id <A, B>)x;  /* { dg-error "duplicate declaration" } */
 
-/* - (void) methodD: (id <A, B, C>)x;  dg-warning "previous declaration"  */
-/* - (void) methodD: (id <A, B, A>)x;  dg-error "duplicate declaration"  */
+- (void) methodD: (id <A, B, C>)x;  /* { dg-message "previous declaration" } */
+- (void) methodD: (id <A, B, A>)x;  /* { dg-error "duplicate declaration" } */
 
-/* - (void) methodE: (MyClass <A, B, C> *)x;  dg-warning "previous declaration"  */
-/* - (void) methodE: (MyClass <A, B, A> *)x;  dg-error "duplicate declaration"  */
+- (void) methodE: (MyClass <A, B, C> *)x; /* { dg-message "previous declaration" } */
+- (void) methodE: (MyClass <A, B, A> *)x; /* { dg-error "duplicate declaration" } */
 
 - (void) methodF: (MyClass <A, B, A> *)x;
 - (void) methodF: (MyClass <A, B, A> *)x; /* Ok */
 
-/* - (void) methodG: (MyClass *)x;   dg-warning "previous declaration"  */
-/* - (void) methodG: (MyClass <A, B, C> *)x;  dg-error "duplicate declaration"  */
+- (void) methodG: (MyClass *)x; /* { dg-message "previous declaration" } */
+- (void) methodG: (MyClass <A, B, C> *)x; /* { dg-error "duplicate declaration" } */
 
-/* - (void) methodH: (MyClass <A, C>*)x;  dg-warning "previous declaration"  */
-/* - (void) methodH: (MyClass *)x;  dg-error "duplicate declaration"  */
+- (void) methodH: (MyClass <A, C>*)x; /* { dg-message "previous declaration" } */
+- (void) methodH: (MyClass *)x; /* { dg-error "duplicate declaration" } */
 
 @end
Index: obj-c++.dg/warn5.mm
===================================================================
--- obj-c++.dg/warn5.mm (revision 168682)
+++ obj-c++.dg/warn5.mm (working copy)
@@ -16,10 +16,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 "" } 
+pmf b = &A::foo-1;      // { dg-error "" } 
 
 int main() {
     double y;
-    y=X(Y-Z);   // { dg-warning "" } 
+    y=X(Y-Z);   // { dg-error "" } 
 }
Index: obj-c++.dg/cxx-scope-2.mm
===================================================================
--- obj-c++.dg/cxx-scope-2.mm   (revision 168682)
+++ obj-c++.dg/cxx-scope-2.mm   (working copy)
@@ -11,9 +11,9 @@ 
 @end
 
 int main(void) {
-  id i = [std::iostream new];  /* { dg-warning "not an Objective\\-C class name or alias" } */
+  id i = [std::iostream new];  /* { dg-error "not an Objective\\-C class name or alias" } */
   i = [iostream new];
-  i = [std::basic_string<char> new];  /* { dg-warning "not an Objective\\-C class name or alias" } */
+  i = [std::basic_string<char> new];  /* { dg-error "not an Objective\\-C class name or alias" } */
 
   return 0;
 }
Index: obj-c++.dg/syntax-error-7.mm
===================================================================
--- obj-c++.dg/syntax-error-7.mm        (revision 168682)
+++ obj-c++.dg/syntax-error-7.mm        (working copy)
@@ -9,5 +9,5 @@ 
 -(void) someMethod /* { dg-error "expected before .-." } */
 {
 }
-@end /* { dg-error "incomplete implementation of class" } */
-/* { dg-error "method definition for ..someMethod. not found" "" { target *-*-* } 12 } */
+@end /* { dg-warning "incomplete implementation of class" } */
+/* { dg-warning "method definition for ..someMethod. not found" "" { target *-*-* } 12 } */
Index: obj-c++.dg/method-8.mm
===================================================================
--- obj-c++.dg/method-8.mm      (revision 168682)
+++ obj-c++.dg/method-8.mm      (working copy)
@@ -2,12 +2,12 @@ 
 /* { dg-do compile } */
 
 @interface class1
-- (int) meth1;   /* { dg-error "previous declaration" } */
+- (int) meth1;   /* { dg-message "previous declaration" } */
 - (void) meth1;  /* { dg-error "duplicate declaration of method .\\-meth1." } */
 @end
 
 @interface class2
-+ (void) meth1; /* { dg-error "previous declaration" } */
++ (void) meth1; /* { dg-message "previous declaration" } */
 + (int) meth1;  /* { dg-error "duplicate declaration of method .\\+meth1." } */
 @end
 
Index: obj-c++.dg/property/at-property-20.mm
===================================================================
--- obj-c++.dg/property/at-property-20.mm       (revision 168682)
+++ obj-c++.dg/property/at-property-20.mm       (working copy)
@@ -37,14 +37,13 @@ 
 
 @interface MyClass : MyRootClass
 { }
-@property (assign) id <MyProtocolA> a;        /* { dg-warning "originally specified here" } */
-@property int b;                              /* { dg-warning "originally specified here" } */
-@property float c;                            /* { dg-warning "originally specified here" } */
-@property (assign) MyRootClass *d;            /* { dg-warning "originally specified here" } */
-@property (assign) MySubClass1 *e;            /* { dg-warning "originally specified here" } */
-/* FIXME: Mysteriously two of the next three need to be 'dg-message' instead of 'dg-warning' for the testcase to work.  */
+@property (assign) id <MyProtocolA> a;        /* { dg-message "originally specified here" } */
+@property int b;                              /* { dg-message "originally specified here" } */
+@property float c;                            /* { dg-message "originally specified here" } */
+@property (assign) MyRootClass *d;            /* { dg-message "originally specified here" } */
+@property (assign) MySubClass1 *e;            /* { dg-message "originally specified here" } */
 @property (assign, readonly) MySubClass1 *f;  /* { dg-message "originally specified here" } */
-@property (assign) MySubClass3 *g;            /* { dg-warning "originally specified here" } */
+@property (assign) MySubClass3 *g;            /* { dg-message "originally specified here" } */
 @property (assign, readonly) MySubClass3 *h;  /* { dg-message "originally specified here"  } */
 @end
 
Index: obj-c++.dg/property/at-property-14.mm
===================================================================
--- obj-c++.dg/property/at-property-14.mm       (revision 168682)
+++ obj-c++.dg/property/at-property-14.mm       (working copy)
@@ -10,11 +10,11 @@ 
 
 /* Test the warnings on 'assign'.  */
 @property id property_a;   /*  { dg-warning "object property .property.a. has no .assign., .retain. or .copy. attribute" } */
-                          /*  { dg-warning ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 12 } */
+                          /*  { dg-message ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 12 } */
 
 @property (readonly) id property_b; /* No 'assign' warning (assign semantics do not matter if the property is readonly).  */
 @property id *property_c;           /* No 'assign' warning (the type is not an Objective-C object).  */
 @property Class property_d;         /* No 'assign' warning (Classes are static objects so assign semantics do not matter for them).  */
 @property MyRootClass *property_e;  /* { dg-warning "object property .property.e. has no .assign., .retain. or .copy. attribute" } */
-                                   /* { dg-warning ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 18 } */
+                                   /* { dg-message ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 18 } */
 @end
Index: obj-c++.dg/property/synthesize-6.mm
===================================================================
--- obj-c++.dg/property/synthesize-6.mm (revision 168682)
+++ obj-c++.dg/property/synthesize-6.mm (working copy)
@@ -15,7 +15,7 @@ 
 @property int v2;
 @end
 @implementation Test
-@synthesize v1 = v;  /* { dg-warning "originally specified here" } */
+@synthesize v1 = v;  /* { dg-message "originally specified here" } */
 @synthesize v2 = v;  /* { dg-error "property .v2. is using the same instance variable as property .v1." } */
 @end
 @interface Test2 : Test
@@ -26,5 +26,5 @@ 
 @synthesize w1;      /* { dg-error "ivar .w1. used by .@synthesize. declaration must be an existing ivar" } */
 @end
 /* { dg-warning "incomplete implementation" "" { target *-*-* } 27 } */
-/* { dg-warning "method definition for .-setW1:. not found" "" { target *-*-* } 27 } */
-/* { dg-warning "method definition for .-w1. not found" "" { target *-*-* } 27 } */
+/* { dg-message "method definition for .-setW1:. not found" "" { target *-*-* } 27 } */
+/* { dg-message "method definition for .-w1. not found" "" { target *-*-* } 27 } */
Index: obj-c++.dg/property/at-property-18.mm
===================================================================
--- obj-c++.dg/property/at-property-18.mm       (revision 168682)
+++ obj-c++.dg/property/at-property-18.mm       (working copy)
@@ -26,21 +26,21 @@ 
 @end
 @interface MyRootClass (Category)
 @property (retain) id a;         /* { dg-warning "assign semantics attributes of property .a. conflict with previous declaration" } */
-                                 /* { dg-warning "originally specified here" "" { target *-*-* } 16 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } 16 } */
 @property (assign) id b;         /* { dg-warning "assign semantics attributes of property .b. conflict with previous declaration" } */
-                                 /* { dg-warning "originally specified here" "" { target *-*-* } 17 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } 17 } */
 @property (nonatomic) int c;     /* { dg-warning ".nonatomic. attribute of property .c. conflicts with previous declaration" } */
-                                 /* { dg-warning "originally specified here" "" { target *-*-* } 18 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } 18 } */
 @property int d;                 /* { dg-warning ".nonatomic. attribute of property .d. conflicts with previous declaration" } */
-                                 /* { dg-warning "originally specified here" "" { target *-*-* } 19 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } 19 } */
 @property (setter=setX:) int e;  /* { dg-warning ".setter. attribute of property .e. conflicts with previous declaration" } */
-                                 /* { dg-warning "originally specified here" "" { target *-*-* } 20 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } 20 } */
 @property (getter=x) int f;      /* { dg-warning ".getter. attribute of property .f. conflicts with previous declaration" } */
-                                 /* { dg-warning "originally specified here" "" { target *-*-* } 21 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } 21 } */
 @property (readonly) int g;      /* { dg-warning ".readonly. attribute of property .g. conflicts with previous declaration" } */
-                                 /* { dg-warning "originally specified here" "" { target *-*-* } 22 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } 22 } */
 @property (readwrite) int h;     /* Ok */
 @property (readonly) int i;      /* { dg-warning ".getter. attribute of property .i. conflicts with previous declaration" } */
-                                 /* { dg-warning "originally specified here" "" { target *-*-* } 24 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } 24 } */
 @property (nonatomic) float j;   /* Ok */
 @end
Index: obj-c++.dg/property/at-property-28.mm
===================================================================
--- obj-c++.dg/property/at-property-28.mm       (revision 168682)
+++ obj-c++.dg/property/at-property-28.mm       (working copy)
@@ -10,11 +10,11 @@ 
 {
   Class isa;
 }
-@property (readonly, retain)    id property1; /* { dg-warning "originally specified here" } */
-@property (readonly)           int property2; /* { dg-warning "originally specified here" } */
-@property (readonly, getter=y) int property3; /* { dg-warning "originally specified here" } */
+@property (readonly, retain)    id property1; /* { dg-message "originally specified here" } */
+@property (readonly)           int property2; /* { dg-message "originally specified here" } */
+@property (readonly, getter=y) int property3; /* { dg-message "originally specified here" } */
 @property (readonly)           int property4; /* Ok */
-@property (readonly)           int property5; /* { dg-warning "originally specified here" } */
+@property (readonly)           int property5; /* { dg-message "originally specified here" } */
 @end
 
 @interface MyRootClass ()
Index: obj-c++.dg/property/dynamic-2.mm
===================================================================
--- obj-c++.dg/property/dynamic-2.mm    (revision 168682)
+++ obj-c++.dg/property/dynamic-2.mm    (working copy)
@@ -40,6 +40,6 @@ 
 @implementation AnotherTest
 @dynamic one;
 @dynamic one; /* { dg-error "property .one. already specified in .@dynamic." } */
-              /* { dg-warning "originally specified here" "" { target *-*-* } 41 } */
+              /* { dg-message "originally specified here" "" { target *-*-* } 41 } */
 @dynamic three; /* { dg-error "no declaration of property .three. found in the interface" } */
 @end
Index: obj-c++.dg/property/synthesize-9.mm
===================================================================
--- obj-c++.dg/property/synthesize-9.mm (revision 168682)
+++ obj-c++.dg/property/synthesize-9.mm (working copy)
@@ -52,12 +52,12 @@ 
 /* This is sometimes OK, sometimes not OK.  */
 @interface Test2
 {
-  int v;                   /* { dg-warning "originally specified here" } */
-  float w;                 /* { dg-warning "originally specified here" } */
-  id x;                    /* { dg-warning "originally specified here" } */
+  int v;                   /* { dg-message "originally specified here" } */
+  float w;                 /* { dg-message "originally specified here" } */
+  id x;                    /* { dg-message "originally specified here" } */
   Test *y;                 
-  id <MyProtocol> *z;      /* { dg-warning "originally specified here" } */
-  ClassA *a;               /* { dg-warning "originally specified here" } */
+  id <MyProtocol> *z;      /* { dg-message "originally specified here" } */
+  ClassA *a;               /* { dg-message "originally specified here" } */
   ClassB *b;               
 }
 @property (assign, readonly) float v;
Index: obj-c++.dg/property/synthesize-11.mm
===================================================================
--- obj-c++.dg/property/synthesize-11.mm        (revision 168682)
+++ obj-c++.dg/property/synthesize-11.mm        (working copy)
@@ -10,8 +10,8 @@ 
 @interface MyRootClass
 {
   Class isa;
-  int countA : 2;                  /* { dg-warning "originally specified here" } */
-  int countB : 3;                  /* { dg-warning "originally specified here" } */
+  int countA : 2;                  /* { dg-message "originally specified here" } */
+  int countB : 3;                  /* { dg-message "originally specified here" } */
 }
 + (id) initialize;
 + (id) alloc;
@@ -27,5 +27,5 @@ 
 @synthesize countA; /* { dg-error ".atomic. property .countA. is using bit-field instance variable .countA." } */
 @synthesize countB; /* { dg-error "property .countB. is using instance variable .countB. of incompatible type" } */
 @end /* { dg-warning "incomplete implementation of class" } */
-/* { dg-warning "method definition for ..setCountA.. not found" "" { target *-*-* } 29 } */
-/* { dg-warning "method definition for ..countA. not found" "" { target *-*-* } 29 } */
+/* { dg-message "method definition for ..setCountA.. not found" "" { target *-*-* } 29 } */
+/* { dg-message "method definition for ..countA. not found" "" { target *-*-* } 29 } */
Index: obj-c++.dg/property/at-property-5.mm
===================================================================
--- obj-c++.dg/property/at-property-5.mm        (revision 168682)
+++ obj-c++.dg/property/at-property-5.mm        (working copy)
@@ -18,7 +18,7 @@ 
 
 /* Test various error messages.  */
 @property id property_a;      /* { dg-warning "object property .property.a. has no .assign., .retain. or .copy. attribute" } */
-                             /* { dg-warning ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 20 } */
+                             /* { dg-message ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 20 } */
 @property int property_b = 4; /* { dg-error "expected" } */
 @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" } */
@@ -28,7 +28,7 @@ 
 @property (retain) id property_g;
 @property (retain) id property_h;
 @property (retain) id property_e; /* { dg-error "redeclaration of property .property_e." } */
-                                 /* { dg-warning "originally specified here" "" { target *-*-* } 26 } */
+                                 /* { dg-message "originally specified here" "" { target *-*-* } 26 } */
 @end
 
 @property id test; /* { dg-error "misplaced .@property. Objective-C.. construct" } */
Index: obj-c++.dg/property/property-neg-3.mm
===================================================================
--- obj-c++.dg/property/property-neg-3.mm       (revision 168682)
+++ obj-c++.dg/property/property-neg-3.mm       (working copy)
@@ -10,5 +10,5 @@ 
 @implementation  Person
 @dynamic firstName;
 @synthesize firstName; /* { dg-error "property .firstName. already specified in .@dynamic." } */
-                       /* { dg-warning "originally specified here" "" { target *-*-* } 11 } */
+                       /* { dg-message "originally specified here" "" { target *-*-* } 11 } */
 @end
Index: obj-c++.dg/property/at-property-16.mm
===================================================================
--- obj-c++.dg/property/at-property-16.mm       (revision 168682)
+++ obj-c++.dg/property/at-property-16.mm       (working copy)
@@ -10,16 +10,15 @@ 
 {
   Class isa;
 }
-@property (assign) id a;                  /* { dg-warning "originally specified here" } */
-@property (retain) id b;                  /* { dg-warning "originally specified here" } */
-@property int c;                          /* { dg-warning "originally specified here" } */
-@property (nonatomic) int d;              /* { dg-warning "originally specified here" } */
-/* FIXME: Mysteriously the next 3 need to be 'dg-message' instead of 'dg-warning' for the testcase to work.  */
+@property (assign) id a;                  /* { dg-message "originally specified here" } */
+@property (retain) id b;                  /* { dg-message "originally specified here" } */
+@property int c;                          /* { dg-message "originally specified here" } */
+@property (nonatomic) int d;              /* { dg-message "originally specified here" } */
 @property int e;                          /* { dg-message "originally specified here" } */
 @property int f;                          /* { dg-message "originally specified here" } */
 @property int g;                          /* { dg-message "originally specified here" } */
 @property (readonly) int h;               /* Ok */
-@property (readonly,getter=getMe) int i;  /* { dg-warning "originally specified here" } */
+@property (readonly,getter=getMe) int i;  /* { dg-message "originally specified here" } */
 @end
 
 @interface MyClass : MyRootClass
Index: obj-c++.dg/property/synthesize-8.mm
===================================================================
--- obj-c++.dg/property/synthesize-8.mm (revision 168682)
+++ obj-c++.dg/property/synthesize-8.mm (working copy)
@@ -52,13 +52,13 @@ 
 /* This is not OK.  */
 @interface Test2
 {
-  int v;                   /* { dg-warning "originally specified here" } */
-  float w;                 /* { dg-warning "originally specified here" } */
-  id x;                    /* { dg-warning "originally specified here" } */
-  Test *y;                 /* { dg-warning "originally specified here" } */
-  id <MyProtocol> *z;      /* { dg-warning "originally specified here" } */
-  ClassA *a;               /* { dg-warning "originally specified here" } */
-  ClassB *b;               /* { dg-warning "originally specified here" } */
+  int v;                   /* { dg-message "originally specified here" } */
+  float w;                 /* { dg-message "originally specified here" } */
+  id x;                    /* { dg-message "originally specified here" } */
+  Test *y;                 /* { dg-message "originally specified here" } */
+  id <MyProtocol> *z;      /* { dg-message "originally specified here" } */
+  ClassA *a;               /* { dg-message "originally specified here" } */
+  ClassB *b;               /* { dg-message "originally specified here" } */
 }
 @property (assign) float v;
 @property (assign) id w;
Index: obj-c++.dg/property/at-property-21.mm
===================================================================
--- obj-c++.dg/property/at-property-21.mm       (revision 168682)
+++ obj-c++.dg/property/at-property-21.mm       (working copy)
@@ -14,10 +14,10 @@ 
 
 /* Test the warnings on 'assign' with protocols.  */
 @property id <MyProtocol> property_a;      /* { dg-warning "object property .property.a. has no .assign., .retain. or .copy. attribute" } */
-                                          /* { dg-warning ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 16 } */
+                                          /* { dg-message ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 16 } */
 
 @property MyRootClass <MyProtocol> *property_b; /* { dg-warning "object property .property.b. has no .assign., .retain. or .copy. attribute" } */
-                                               /* { dg-warning ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 19 } */
+                                               /* { dg-message ".assign. can be unsafe for Objective-C objects" "" { target *-*-* } 19 } */
 
 @property Class <MyProtocol> property_c;   /* No 'assign' warning (Classes are static objects so assign semantics do not matter for them). */
 @end
Index: obj-c++.dg/method-conflict-1.mm
===================================================================
--- obj-c++.dg/method-conflict-1.mm     (revision 168682)
+++ obj-c++.dg/method-conflict-1.mm     (working copy)
@@ -7,17 +7,17 @@ 
    with the same name but conflicting method signatures.  */
 
 @protocol MyProtocol
-+ (int) method1: (int)x;   /* { dg-error "previous declaration" } */
++ (int) method1: (int)x;   /* { dg-message "previous declaration" } */
 + (float) method1: (int)x; /* { dg-error "duplicate declaration of method .\\+method1." } */
 
-- (int) method2: (int)x;   /* { dg-error "previous declaration" } */
+- (int) method2: (int)x;   /* { dg-message "previous declaration" } */
 - (int) method2: (float)x; /* { dg-error "duplicate declaration of method .\\-method2." } */
 
 @optional
-+ (int *) method3: (int)x;    /* { dg-error "previous declaration" } */
++ (int *) method3: (int)x;    /* { dg-message "previous declaration" } */
 + (int *) method3: (int **)x; /* { dg-error "duplicate declaration of method .\\+method3." } */
 
-- (id) method4: (id)x;   /* { dg-error "previous declaration" } */
+- (id) method4: (id)x;   /* { dg-message "previous declaration" } */
 - (void) method4: (id)x; /* { dg-error "duplicate declaration of method .\\-method4." } */
 @end
 
Index: obj-c++.dg/exceptions-5.mm
===================================================================
--- obj-c++.dg/exceptions-5.mm  (revision 168682)
+++ obj-c++.dg/exceptions-5.mm  (working copy)
@@ -71,9 +71,9 @@  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 *-*-* } 72 } */
-      dummy++;            /* { dg-warning "MyObject" "" { target *-*-* } 13 } */
-    }                     /* { dg-warning "candidate" "" { target *-*-* } 13 } */
-                          /* { dg-warning "candidate" "" { target *-*-* } 72 } */
+      dummy++;            /* { dg-message "MyObject" "" { target *-*-* } 13 } */
+    }                     /* { dg-message "candidate" "" { target *-*-* } 13 } */
+                          /* { dg-message "candidate" "" { target *-*-* } 72 } */
 
   @try { @throw object; }
   @catch (static MyObject *) /* { dg-error "storage class" } */
Index: obj-c++.dg/method-12.mm
===================================================================
--- obj-c++.dg/method-12.mm     (revision 168682)
+++ obj-c++.dg/method-12.mm     (working copy)
@@ -19,8 +19,8 @@  void foo(void) {
   Class receiver;
 
   [receiver port];  /* { dg-warning "multiple methods named .\\+port. found" } */
-       /* { dg-warning "using .\\-\\(unsigned( int)?\\)port." "" { target *-*-* } 9 } */
-       /* { dg-warning "also found .\\+\\(Protocol \\*\\)port." "" { target *-*-* } 14 } */
+       /* { dg-message "using .\\-\\(unsigned( int)?\\)port." "" { target *-*-* } 9 } */
+       /* { dg-message "also found .\\+\\(Protocol \\*\\)port." "" { target *-*-* } 14 } */
 
   [receiver starboard];  /* { dg-warning "no .\\+starboard. method found" } */
        /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 25 } */
Index: obj-c++.dg/encode-7.mm
===================================================================
--- obj-c++.dg/encode-7.mm      (revision 168682)
+++ obj-c++.dg/encode-7.mm      (working copy)
@@ -26,7 +26,7 @@ 
 @interface Test : Object
 { float j; }
 -(void) test2: (int [5])a with: (int [])b;
--(id) test3: (Test **)b; /* { dg-warning "previous declaration of .\\-\\(id\\)test3:\\(Test \\*\\*\\)b." } */
+-(id) test3: (Test **)b; /* { dg-message "previous declaration of .\\-\\(id\\)test3:\\(Test \\*\\*\\)b." } */
 @end
 
 @implementation Test
Index: obj-c++.dg/class-extension-3.mm
===================================================================
--- obj-c++.dg/class-extension-3.mm     (revision 168682)
+++ obj-c++.dg/class-extension-3.mm     (working copy)
@@ -10,8 +10,8 @@ 
   Class isa;
   int count;
 }
-- (int) test;        /* { dg-warning "previous declaration" } */
-@property int count; /* { dg-warning "originally specified here" } */
+- (int) test;        /* { dg-message "previous declaration" } */
+@property int count; /* { dg-message "originally specified here" } */
 @end
 
 @interface MyObject ()
Index: obj-c++.dg/method-conflict-4.mm
===================================================================
--- obj-c++.dg/method-conflict-4.mm     (revision 168682)
+++ obj-c++.dg/method-conflict-4.mm     (working copy)
@@ -21,10 +21,10 @@ 
 @end
 
 @interface MyClass2
-- (void) aMethod: (id <A>)x;  /* { dg-error "previous declaration" } */
+- (void) aMethod: (id <A>)x;  /* { dg-message "previous declaration" } */
 - (void) aMethod: (id <B>)x;  /* { dg-error "duplicate declaration" } */
 
-- (void) bMethod: (id <B>)x;  /* { dg-error "previous declaration" } */
+- (void) bMethod: (id <B>)x;  /* { dg-message "previous declaration" } */
 - (void) bMethod: (id <A>)x;  /* { dg-error "duplicate declaration" } */
 
 - (void) cMethod: (id <A, B>)x;
@@ -33,16 +33,15 @@ 
 - (void) dMethod: (id <A, B>)x;
 - (void) dMethod: (id <B, A>)x; /* Ok */
 
-/* FIXME: The compiler works, but the testsuite produces errors anyway.  */
-/* - (void) eMethod: (id <A>)x;   dg-error "previous declaration"  */
-/* - (void) eMethod: (id <B, C>)x;   dg-error "duplicate declaration"  */
+- (void) eMethod: (id <A>)x;    /* { dg-message "previous declaration" } */
+- (void) eMethod: (id <B, C>)x; /* { dg-error "duplicate declaration" } */
 
-/*- (void) fMethod: (id <B, C>)x;   dg-error "previous declaration"  */
-/*- (void) fMethod: (id <A>)x;   dg-error "duplicate declaration"  */
+- (void) fMethod: (id <B, C>)x;    /* { dg-message "previous declaration" } */
+- (void) fMethod: (id <A>)x;       /* { dg-error "duplicate declaration" } */
 
-/* - (void) gMethod: (id <A>)x;   dg-error "previous declaration" */
-/* - (void) gMethod: (id <A, B, C>)x;   dg-error "duplicate declaration" */
+- (void) gMethod: (id <A>)x;       /* { dg-message "previous declaration" } */
+- (void) gMethod: (id <A, B, C>)x; /* { dg-error "duplicate declaration" } */
 
-/* - (void) hMethod: (id <A, B, C>)x;   dg-error "previous declaration" */
-/* - (void) hMethod: (id <A>)x;   dg-error "duplicate declaration" */
+- (void) hMethod: (id <A, B, C>)x; /* { dg-message "previous declaration" } */
+- (void) hMethod: (id <A>)x;       /* { dg-error "duplicate declaration" } */
 @end
Index: obj-c++.dg/method-15.mm
===================================================================
--- obj-c++.dg/method-15.mm     (revision 168682)
+++ obj-c++.dg/method-15.mm     (working copy)
@@ -32,9 +32,9 @@ 
 {
     NTGridDataObject *result = [[NTGridDataObject alloc] initWithData:data];
      /* { dg-warning "multiple methods named .\\-initWithData:. found" "" { target *-*-* } 33 } */
-     /* { dg-warning "using .\\-\\(id\\)initWithData:\\(Object \\*\\)data." "" { target *-*-* } 9 } */
-     /* { dg-warning "also found .\\-\\(id\\)initWithData:\\(id <MyObject, MyCoding>\\)data." "" { target *-*-* } 17 } */
-     /* { dg-warning "also found .\\-\\(id\\)initWithData:\\(int\\)data." "" { target *-*-* } 13 } */
+     /* { dg-message "using .\\-\\(id\\)initWithData:\\(Object \\*\\)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 } */
 
      /* 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 } */
Index: obj-c++.dg/attributes/categ-attribute-2.mm
===================================================================
--- obj-c++.dg/attributes/categ-attribute-2.mm  (revision 168682)
+++ obj-c++.dg/attributes/categ-attribute-2.mm  (working copy)
@@ -20,7 +20,7 @@  __attribute__ ((deprecated("no dep_categ")))
 @end
 
 __attribute__ ((deprecated)) 
-@implementation obj (dep_categ) /* { dg-error "prefix attributes are ignored before" } */
+@implementation obj (dep_categ) /* { dg-warning "prefix attributes are ignored before" } */
 - (int) depmth { return var + 1; }
 @end
 
Index: obj-c++.dg/exceptions-3.mm
===================================================================
--- obj-c++.dg/exceptions-3.mm  (revision 168682)
+++ obj-c++.dg/exceptions-3.mm  (working copy)
@@ -71,9 +71,9 @@  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 *-*-* } 72 } */
-      dummy++;            /* { dg-warning "MyObject" "" { target *-*-* } 13 } */
-    }                     /* { dg-warning "candidate" "" { target *-*-* } 13 } */
-                          /* { dg-warning "candidate" "" { target *-*-* } 72 } */
+      dummy++;            /* { dg-message "MyObject" "" { target *-*-* } 13 } */
+    }                     /* { dg-message "candidate" "" { target *-*-* } 13 } */
+                          /* { dg-message "candidates" "" { target *-*-* } 72 } */
   @try { @throw object; }
   @catch (static MyObject *x) /* { dg-error "storage class" } */
     {
Index: obj-c++.dg/ivar-invalid-type-1.mm
===================================================================
--- obj-c++.dg/ivar-invalid-type-1.mm   (revision 168682)
+++ obj-c++.dg/ivar-invalid-type-1.mm   (working copy)
@@ -14,6 +14,6 @@ 
   static int c;    /* { dg-error "invalid type" } */
   inline int d;    /* { dg-error "declared as an .inline." } */
   typedef int e;   /* { dg-error "invalid type" } */
-  __thread int f;  /* dg-error "invalid type" */ /* FIXME: The compiler generates this message, but the testsuite does not match it.  */
+  __thread int f;  /* { dg-error "invalid type" } */
 }
 @end
Index: obj-c++.dg/method-conflict-2.mm
===================================================================
--- obj-c++.dg/method-conflict-2.mm     (revision 168682)
+++ obj-c++.dg/method-conflict-2.mm     (working copy)
@@ -11,8 +11,8 @@ 
 @protocol MyProtocol
 
 @optional
-+ (void) method1: (id)x; /* { dg-error "previous declaration" } */
-- (id) method2: (long)x; /* { dg-error "previous declaration" } */
++ (void) method1: (id)x; /* { dg-message "previous declaration" } */
+- (id) method2: (long)x; /* { dg-message "previous declaration" } */
 
 @required
 + (void) method1: (id)x; /* { dg-error "declared .@optional. and .@required. at the same time" } */
@@ -24,8 +24,8 @@ 
 @protocol MyProtocol2
 
 @required
-+ (void) method3: (Class)x; /* { dg-error "previous declaration" } */
-- (id *) method4: (long)x;  /* { dg-error "previous declaration" } */
++ (void) method3: (Class)x; /* { dg-message "previous declaration" } */
+- (id *) method4: (long)x;  /* { dg-message "previous declaration" } */
 
 @optional
 + (void) method3: (Class)x; /* { dg-error "declared .@optional. and .@required. at the same time" } */
Index: obj-c++.dg/method-4.mm
===================================================================
--- obj-c++.dg/method-4.mm      (revision 168682)
+++ obj-c++.dg/method-4.mm      (working copy)
@@ -7,13 +7,13 @@ 
 #include <objc/objc.h>
 
 @interface Base
-- (id) meth1: (Base *)arg1; /* { dg-warning "using .\\-\\(id\\)meth1:\\(Base \\*\\)arg1." } */
-- (id) window;              /* { dg-warning "using .\\-\\(id\\)window" } */
+- (id) meth1: (Base *)arg1; /* { dg-message "using .\\-\\(id\\)meth1:\\(Base \\*\\)arg1." } */
+- (id) window;              /* { dg-message "using .\\-\\(id\\)window" } */
 @end
 
 @interface Derived: Base
-- (id) meth1: (Derived *)arg1; /* { dg-warning "also found .\\-\\(id\\)meth1:\\(Derived \\*\\)arg1." } */
-- (Base *) window;             /* { dg-warning "also found .\\-\\(Base \\*\\)window." } */
+- (id) meth1: (Derived *)arg1; /* { dg-message "also found .\\-\\(id\\)meth1:\\(Derived \\*\\)arg1." } */
+- (Base *) window;             /* { dg-message "also found .\\-\\(Base \\*\\)window." } */
 @end
 
 void foo(void) {
Index: obj-c++.dg/proto-lossage-4.mm
===================================================================
--- obj-c++.dg/proto-lossage-4.mm       (revision 168682)
+++ obj-c++.dg/proto-lossage-4.mm       (working copy)
@@ -40,7 +40,7 @@  long foo(void) {
   receiver += [objrcvr2 someValue];
   receiver += [objrcvr2 anotherValue];
   receiver += [(Obj *)objrcvr2 someValue]; /* { dg-warning ".Obj. may not respond to .\\-someValue." } */
-/* { dg-warning "invalid conversion" "" { target *-*-* } 42 } */
+/* { dg-error "invalid conversion" "" { target *-*-* } 42 } */
 
   receiver += [(Obj *)objrcvr2 anotherValue];
 
Index: obj-c++.dg/method-13.mm
===================================================================
--- obj-c++.dg/method-13.mm     (revision 168682)
+++ obj-c++.dg/method-13.mm     (working copy)
@@ -20,8 +20,8 @@  id foo(void) {
        /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 18 } */
        /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 18 } */
   [obj2 setWindow:nil]; /* { dg-warning "multiple methods named .\\-setWindow:. found" } */
-       /* { dg-warning "using .\\-\\(void\\)setWindow:\\(Object \\*\\)wdw." "" { target *-*-* } 8 } */
-       /* { dg-warning "also found .\\-\\(void\\)setWindow:\\(Class1 \\*\\)window." "" { target *-*-* } 12 } */
+       /* { dg-message "using .\\-\\(void\\)setWindow:\\(Object \\*\\)wdw." "" { target *-*-* } 8 } */
+       /* { dg-message "also found .\\-\\(void\\)setWindow:\\(Class1 \\*\\)window." "" { target *-*-* } 12 } */
 
   return obj;
 }
Index: obj-c++.dg/class-protocol-1.mm
===================================================================
--- obj-c++.dg/class-protocol-1.mm      (revision 168682)
+++ obj-c++.dg/class-protocol-1.mm      (working copy)
@@ -326,8 +326,8 @@  testComptypes(void)
     objP1 == cls; /* { dg-warning "lacks a cast" } */
   }
   { /* id <protocol>, non-ObjC  */
-    num == objP1; /* { dg-warning "between pointer" } */
-    objP1 == num; /* { dg-warning "between pointer" } */
+    num == objP1; /* { dg-error "between pointer" } */
+    objP1 == num; /* { dg-error "between pointer" } */
 
     ptr == objP1;
     objP1 == ptr;
@@ -352,8 +352,8 @@  testComptypes(void)
     clsP1 == cls;
   }
   { /* Class <protocol>, non-ObjC */
-    num == clsP1; /* { dg-warning "between pointer" } */
-    clsP1 == num; /* { dg-warning "between pointer" } */
+    num == clsP1; /* { dg-error "between pointer" } */
+    clsP1 == num; /* { dg-error "between pointer" } */
 
     ptr == clsP1;
     clsP1 == ptr;
Index: obj-c++.dg/tls/diag-5.mm
===================================================================
--- obj-c++.dg/tls/diag-5.mm    (revision 168682)
+++ obj-c++.dg/tls/diag-5.mm    (working copy)
@@ -1,4 +1,4 @@ 
 /* __thread specifiers on empty declarations.  */
 /* { dg-require-effective-target tls } */
 
-__thread struct foo; /* { dg-warning "qualifiers can only be specified for objects and functions" } */
+__thread struct foo; /* { dg-error "qualifiers can only be specified for objects and functions" } */
Index: obj-c++.dg/method-16.mm
===================================================================
--- obj-c++.dg/method-16.mm     (revision 168682)
+++ obj-c++.dg/method-16.mm     (working copy)
@@ -25,9 +25,9 @@  void foo(void) {
   id obj1, obj2 = 0;
   obj2 = [obj1 initWithData: obj2];
      /* { dg-warning "multiple methods named .\\-initWithData:. found" "" { target *-*-* } 26 } */
-     /* { dg-warning "using .\\-\\(void\\)initWithData:\\(Object1 \\*\\)data." "" { target *-*-* } 13 } */
-     /* { dg-warning "also found .\\-\\(id\\)initWithData:\\(Object1 \\*\\)data." "" { target *-*-* } 17 } */
-     /* { dg-warning "also found .\\-\\(id\\)initWithData:\\(Object2 \\*\\)data." "" { target *-*-* } 21 } */
+     /* { 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 } */
 
      /* 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 } */