diff --git a/llvm-gcc-4.2/gcc/testsuite/g++.apple/block-continuation.C b/llvm-gcc-4.2/gcc/testsuite/g++.apple/block-continuation.C
index ec77690..739a8cf 100644
--- a/llvm-gcc-4.2/gcc/testsuite/g++.apple/block-continuation.C
+++ b/llvm-gcc-4.2/gcc/testsuite/g++.apple/block-continuation.C
@@ -1,4 +1,5 @@
 /* APPLE LOCAL file radar 5732232 - blocks */
+/* Modified for radar 6169527 */
 /* { dg-do compile } */
 /* { dg-options "-fblocks" } */
 
@@ -10,9 +11,9 @@
 	break;		/* { dg-error "break statement not within loop or switch" } */
 	while (1) break;/* ok */
 	goto label1;	/* { dg-error "goto not allowed in block literal" } */
-			/* { dg-error "label" "" { target *-*-* } 12 } */
-      });
-  label1:
+			/* { dg-error "label" "" { target *-*-* } 13 } */
+      });	/* { dg-error "enters" } */
+  label1:	/* { dg-error "jump to label" } */
     break; /* OK */
     if (1)
       continue; /* OK */
@@ -40,5 +41,5 @@
 	  break;
     }
   };
-  goto label1;
+  goto label1; /* { dg-error "from here" } */
 }
diff --git a/llvm-gcc-4.2/gcc/testsuite/g++.apple/block-return.C b/llvm-gcc-4.2/gcc/testsuite/g++.apple/block-return.C
index 203dabd..ba430e1 100644
--- a/llvm-gcc-4.2/gcc/testsuite/g++.apple/block-return.C
+++ b/llvm-gcc-4.2/gcc/testsuite/g++.apple/block-return.C
@@ -5,43 +5,55 @@
 typedef void (^CL)(void);
 
 CL foo() {
+  short y;
+  short (^add1)(void) = ^{ return y+1; };  /* { dg-error "cannot convert" } */
 
-	short y;
-        short (^add1)(void) = ^{ return y+1; };  /* { dg-error "cannot convert" } */
+  CL X = ^{
+    if (2)
+      return;
+    return 1;		/* { dg-error "void block should not return a value" } */
+  };
 
-	CL X = ^{if (2)
-                   return;
-           	 return 1;   /* { dg-error "void block should not return a value" } */
-			     /* { dg-error "return-statement with a value" "" { target *-*-* } 14 } */
-	 	};
+  int (^Y) (void)  = ^{
+    if (3)
+      return 1;
+    else
+      return;		/* { dg-error "non-void block should return a value" } */
+  };
 
-	int (^Y) (void)  = ^{ if (3)
-	     	        return 1;
-	   	       else
-	     	        return;  /* { dg-error "non-void block should return a value" } */
-	             };
+  char *(^Z)(void) = ^{
+    if (3)
+      return "";
+    else
+      return (char*)0;	/* { dg-error "incompatible type returning" } */ 
+  };			/* { dg-error "cannot convert" } */
 
-	char *(^Z)(void) = ^{ if (3)
-             			return "";  /* { dg-error "cannot convert" } */
-           		      else
-             		       return (char*)0; /* { dg-error "incompatible type returning" } */ 
-         		    };	/* { dg-error "cannot convert" } */
+  double (^A)(void) = ^ {
+    if (1)
+      return (float)1.0;
+    else
+      if (2)
+	return (double)2.0;	/* { dg-error "incompatible type returning" } */
+    return 1;		/* { dg-error "incompatible type returning" } */
+  };			/* { dg-error "cannot convert" } */
+  char *(^B)(void) = ^{
+    if (3)
+      return "";
+    else
+      return 2;		/* { dg-error "incompatible type returning" } */
+  };			/* { dg-error "cannot convert" } */
 
-        double (^A)(void) = ^ { if (1)
-				 return (float)1.0;
-				else
-				  if (2)
-				    return (double)2.0;  /* { dg-error "incompatible type returning" } */
-				return 1;  /* { dg-error "incompatible type returning" } */
-			      }; /* { dg-error "cannot convert" } */
-        char *(^B)(void) =
-		^{ if (3)
-             	     return ""; /* { dg-error "cannot convert" } */
-           	   else
-             	    return 2; /* { dg-error "incompatible type returning" } */
-         	};	     /* { dg-error "cannot convert" } */
+  __block int i;
+  int& (^o)() = ^ int& {
+    int &ri = i;
+    return ri;
+  };
 
-        return ^{ return 1; };  /* { dg-error "cannot convert" } */
+  int (^o1)() = ^ {
+    int &ri = i;
+    return ri;
+  };
+  o() = 1;
 
+  return ^{ return 1; };	/* { dg-error "cannot convert" } */
 }
-
diff --git a/llvm-gcc-4.2/gcc/testsuite/g++.dg/tree-ssa/ivopts-1.C b/llvm-gcc-4.2/gcc/testsuite/g++.dg/tree-ssa/ivopts-1.C
index 8e1b648..2593fa9 100644
--- a/llvm-gcc-4.2/gcc/testsuite/g++.dg/tree-ssa/ivopts-1.C
+++ b/llvm-gcc-4.2/gcc/testsuite/g++.dg/tree-ssa/ivopts-1.C
@@ -15,6 +15,8 @@
 }
 
 /* { dg-final { scan-tree-dump-not "-&x" "ivopts" } } */
-/* { dg-final { scan-tree-dump-not "offset: -4B" "ivopts" { xfail i?86-*-* x86_64-*-* hppa*-*-* } } } */
-/* { dg-final { scan-tree-dump-not "&x\\\[5\\\]" "ivopts" { xfail i?86-*-* x86_64-*-* hppa*-*-* } } } */
+/* APPLE LOCAL begin 5431747 */
+/* { dg-final { scan-tree-dump-not "offset: -4B" "ivopts" { xfail hppa*-*-* } } } */
+/* { dg-final { scan-tree-dump-not "&x\\\[5\\\]" "ivopts" { xfail hppa*-*-* } } } */
+/* APPLE LOCAL end 5431747 */
 /* { dg-final { cleanup-tree-dump "ivopts" } } */
diff --git a/llvm-gcc-4.2/gcc/testsuite/gcc.apple/block-literal.c b/llvm-gcc-4.2/gcc/testsuite/gcc.apple/block-literal.c
index 8a4c550..10359e2 100644
--- a/llvm-gcc-4.2/gcc/testsuite/gcc.apple/block-literal.c
+++ b/llvm-gcc-4.2/gcc/testsuite/gcc.apple/block-literal.c
@@ -23,7 +23,8 @@
 
   I(^{ });
 
-  noop = ^noop /* { dg-error "blocks require" } */
+  noop = ^noop /* { dg-error "expected specifier" } */ 
+	       /*  { dg-error "blocks require" "" { target *-*-* } 26 } */
     ;  /* { dg-error "argument list is required for block expression literals" } */
 
   return ^{printf("\nBlock\n"); };  /* { dg-error "returning block that lives on the local stack" } */
@@ -35,7 +36,8 @@
   takeblock(^{ printf("%d\n", x); });
   takeblock(^{ x = 4; });  /* { dg-error "assignment of read-only variable" } */
 
-  takeblock(^test2() /* { dg-error "blocks require" } */
+  takeblock(^test2() /* { dg-error "expected specifier" } */  
+		     /* { dg-error "blocks require" "" { target *-*-* } 39 } */
 	    );	/* { dg-error "argument list is required for block expression literals" } */
 
   takeblock(^(void)(void)printf("hello world!\n")); /* { dg-error "blocks require" } */
diff --git a/llvm-gcc-4.2/gcc/testsuite/gcc.apple/block-return.c b/llvm-gcc-4.2/gcc/testsuite/gcc.apple/block-return.c
index 9e1499c..d4cfc61 100644
--- a/llvm-gcc-4.2/gcc/testsuite/gcc.apple/block-return.c
+++ b/llvm-gcc-4.2/gcc/testsuite/gcc.apple/block-return.c
@@ -5,43 +5,44 @@
 typedef void (^CL)(void);
 
 CL foo() {
+  short y;
+  short (^add1)(void) = ^{ return y+1; };  /* { dg-error "incompatible block pointer types initializing" } */
 
-	short y;
-        short (^add1)(void) = ^{ return y+1; };  /* { dg-error "incompatible block pointer types initializing" } */
+  CL X = ^{
+    if (2)
+      return;
+    return 1;		/* { dg-error "void block should not return a value" } */
+  };
 
-	CL X = ^{if (2)
-                   return;
-           	 return 1;   /* { dg-error "void block should not return a value" } */
-	 	};
+  int (^Y) (void)  = ^{
+    if (3)
+      return 1;
+    else
+      return;		/* { dg-error "non-void block should return a value" } */
+  };
 
-	int (^Y) (void)  = ^{ if (3)
-	     	        return 1;
-	   	       else
-	     	        return;  /* { dg-error "non-void block should return a value" } */
-	             };
+  char *(^Z)(void) = ^{
+    if (3)
+      return "";
+    else
+      return (char*)0;
+  };
 
-	char *(^Z)(void) = ^{ if (3)
-             			return "";
-           		      else
-             		       return (char*)0;
-         		    };
+  double (^A)(void) = ^ {
+    if (1)
+      return (float)1.0;
+    else
+      if (2)
+	return (double)2.0;	/* { dg-error "incompatible type returning" } */
+    return 1;		/* { dg-error "incompatible type returning" } */
+  };			/* { dg-error "incompatible block pointer types initializing" } */
+  char *(^B)(void) = ^{
+    if (3)
+      return "";
+    else
+      return 2;		/* { dg-error "incompatible type returning" } */
+			/* { dg-warning "return makes pointer from integer without a cast" "" { target *-*-* } 43 } */
+  };
 
-        double (^A)(void) = ^ { if (1)
-				 return (float)1.0;
-				else
-				  if (2)
-				    return (double)2.0;  /* { dg-error "incompatible type returning" } */
-				return 1;  /* { dg-error "incompatible type returning" } */
-			      }; /* { dg-error "incompatible block pointer types initializing" } */
-        char *(^B)(void) =
-		^{ if (3)
-             	     return "";
-           	   else
-             	    return 2; /* { dg-error "incompatible type returning" } */
-			      /* { dg-warning "return makes pointer from integer without a cast" "" { target *-*-* } 40 } */
-         	};
-
-        return ^{ return 1; };  /* { dg-error "incompatible block pointer types initializing" } */
-
+  return ^{ return 1; };	/* { dg-error "incompatible block pointer types initializing" } */
 }
-
diff --git a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/class-protocol-1.mm b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/class-protocol-1.mm
index efe60bb..ac1f83a 100644
--- a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/class-protocol-1.mm
+++ b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/class-protocol-1.mm
@@ -1,4 +1,4 @@
-
+/* APPLE LOCAL file radar 5839123 */
 /* Check Class <protocol> types */
 /* Author: David Ayers <d.ayers@inode.at> */
 /* { dg-do compile } */
@@ -176,7 +176,7 @@
 
 @protocol FwProto;
 /* APPLE LOCAL radar 4398221 */
-@interface MyClass1 (Forward) <FwProto>  /* { dg-warning "no definition of protocol \\'FwProto\\' " } */
+@interface MyClass1 (Forward) <FwProto> /* { dg-warning "no definition of protocol \\'FwProto\\' " } */
 @end
 
 Class <FwProto> clsP7 = 0;
@@ -327,8 +327,8 @@
     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;
@@ -383,12 +383,12 @@
     objP1 = obj;
   }
   { /* id <protocol>, Class  */
-    cls = objP1; /* { dg-warning "distinct Objective\\-C type" } */
-    objP1 = cls; /* { dg-warning "distinct Objective\\-C type" } */
+    cls = objP1; /* { dg-warning "incompatible Objective-C types assigning \\'objc_object\\*\\', expected \\'objc_class\\*\\'" } */
+    objP1 = cls; /* { dg-warning "incompatible Objective-C types assigning \\'objc_class\\*\\', expected \\'objc_object\\*\\'" } */
   }
   { /* id <protocol>, non-ObjC  */
-    num = objP1; /* { dg-error "invalid conversion" } */
-    objP1 = num; /* { dg-error "invalid conversion" } */
+    num = objP1; /* { dg-warning "invalid conversion" } */
+    objP1 = num; /* { dg-warning "invalid conversion" } */
 
     ptr = objP1;
     objP1 = ptr; /* { dg-error "invalid conversion" } */
@@ -402,11 +402,11 @@
   }
   { /* Class <protocol>, SomeClass * */
     /* These combinations should always elicit a warning.  */
-    mc1 = clsP1; /* { dg-warning "distinct Objective\\-C type" } */
-    clsP1 = mc1; /* { dg-warning "distinct Objective\\-C type" } */
+    mc1 = clsP1; /* { dg-warning "incompatible Objective-C types assigning \\'objc_class\\*\\', expected \\'MyClass1\\*\\'" } */
+    clsP1 = mc1; /* { dg-warning "incompatible Objective-C types assigning \\'MyClass1\\*\\', expected \\'objc_class\\*\\'" } */
     
-    mc1 = clsP2; /* { dg-warning "distinct Objective\\-C type" } */
-    clsP2 = mc1; /* { dg-warning "distinct Objective\\-C type" } */
+    mc1 = clsP2; /* { dg-warning "incompatible Objective-C types assigning \\'objc_class\\*\\', expected \\'MyClass1\\*\\'" } */
+    clsP2 = mc1; /* { dg-warning "incompatible Objective-C types assigning \\'MyClass1\\*\\', expected \\'objc_class\\*\\'" } */
   }
   { /* Class <protocol>, id */
     obj = clsP1;
@@ -424,8 +424,8 @@
     clsP1 = ptr; /* { dg-error "invalid conversion" } */
   }
   { /* Class <protocol>, id <protocol> */
-    clsP1 = objP1; /* { dg-warning "distinct Objective\\-C type" } */
-    objP1 = clsP1; /* { dg-warning "distinct Objective\\-C type" } */
+    clsP1 = objP1; /* { dg-warning "incompatible Objective-C types assigning \\'objc_object\\*\\', expected \\'objc_class\\*\\'" } */
+    objP1 = clsP1; /* { dg-warning "incompatible Objective-C types assigning \\'objc_class\\*\\', expected \\'objc_object\\*\\'" } */
   }
 }
 
diff --git a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/comp-types-11.mm b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/comp-types-11.mm
index a5a3a4a..c166a39 100644
--- a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/comp-types-11.mm
+++ b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/comp-types-11.mm
@@ -25,7 +25,7 @@
 @implementation Derived2
 + (Derived1 *)new {
   Derived2 *o = [super new];
-  return o;  /* { dg-warning "distinct Objective\\-C type in return" } */
+  return o;  /* { dg-warning "incompatible Objective-C types returning \\'Derived2\\*\\', expected \\'Derived1\\*\\'" } */
 }
 @end
 
diff --git a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/comp-types-12.mm b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/comp-types-12.mm
index 2d620b2..aaf2b79 100644
--- a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/comp-types-12.mm
+++ b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/comp-types-12.mm
@@ -9,7 +9,7 @@
 extern Object* foo(void);
 static Derived *test(void)
 {
-   Derived *m = foo();   /* { dg-warning "initialization from distinct Objective\\-C type" } */
+   Derived *m = foo();   /* { dg-warning "incompatible Objective-C types initializing \\'Object\\*\\', expected \\'Derived\\*\\'" } */
 
    return m;
 }
diff --git a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/comp-types-2.mm b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/comp-types-2.mm
index 0704378..dc93887 100644
--- a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/comp-types-2.mm
+++ b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/comp-types-2.mm
@@ -1,3 +1,4 @@
+/* APPLE LOCAL file radar 5839123 */
 /* Test various ObjC types assignments and comparisons.  */
 /* Author: Nicola Pero <nicola@brainstorm.co.uk>.  */
 /* { dg-do compile } */
@@ -33,9 +34,9 @@
   /* Assigning to a 'MyClass *' variable should always generate a
      warning, unless done from an 'id'.  */
   obj_c = obj;    /* Ok */
-  obj_c = obj_p;  /* { dg-warning "distinct Objective\\-C type" } */
-  obj_c = obj_cp; /* { dg-warning "distinct Objective\\-C type" } */
-  obj_c = obj_C;  /* { dg-warning "distinct Objective\\-C type" } */
+  obj_c = obj_p;  /* { dg-warning "incompatible Objective-C types assigning \\'objc_object\\*\\', expected \\'MyClass\\*\\'" } */
+  obj_c = obj_cp; /* { dg-warning "incompatible Objective-C types assigning \\'MyOtherClass\\*\\', expected \\'MyClass\\*\\'" } */
+  obj_c = obj_C;  /* { dg-warning "incompatible Objective-C types assigning \\'objc_class\\*\\', expected \\'MyClass\\*\\'" } */
 
   /* Assigning to an 'id<MyProtocol>' variable should generate a
      warning if done from a 'MyClass *' (which doesn't implement
@@ -44,15 +45,15 @@
   obj_p = obj;    /* Ok */
   obj_p = obj_c;  /* { dg-warning "does not implement" } */
   obj_p = obj_cp; /* Ok  */
-  obj_p = obj_C;  /* { dg-warning "distinct Objective\\-C type" } */
+  obj_p = obj_C;  /* { dg-warning "incompatible Objective-C types assigning \\'objc_class\\*\\', expected \\'objc_object\\*\\'" } */
 
   /* Assigning to a 'MyOtherClass *' variable should always generate
      a warning, unless done from an 'id' or an 'id<MyProtocol>' (since
      MyOtherClass implements MyProtocol).  */
   obj_cp = obj;    /* Ok */
-  obj_cp = obj_c;  /* { dg-warning "distinct Objective\\-C type" } */
+  obj_cp = obj_c;  /* { dg-warning "incompatible Objective-C types assigning \\'MyClass\\*\\', expected \\'MyOtherClass\\*\\'" } */
   obj_cp = obj_p;  /* Ok */
-  obj_cp = obj_C;  /* { dg-warning "distinct Objective\\-C type" } */
+  obj_cp = obj_C;  /* { dg-warning "incompatible Objective-C types assigning \\'objc_class\\*\\', expected \\'MyOtherClass\\*\\'" } */
 
   /* Any comparison involving an 'id' must be without warnings.  */
   if (obj == obj_p) ;  /* Ok  */ /*Bogus warning here in 2.95.4*/
diff --git a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/comp-types-7.mm b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/comp-types-7.mm
index e235581..65af5b2 100644
--- a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/comp-types-7.mm
+++ b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/comp-types-7.mm
@@ -1,3 +1,4 @@
+/* APPLE LOCAL file radar 5839123 */
 /* Test assignments and comparisons involving category protocols.  */
 /* Author: Nicola Pero <nicola@brainstorm.co.uk>.  */
 /* { dg-do compile } */
@@ -24,8 +25,8 @@
   MyClass *obj_cp = nil;
   MyOtherClass *obj_cp2 = nil;
 
-  obj_cp = obj_p;  /* { dg-warning "distinct Objective\\-C type" } */
-  obj_cp2 = obj_p; /* { dg-warning "distinct Objective\\-C type" } */
+  obj_cp = obj_p;  /* { dg-warning "incompatible Objective-C types assigning \\'objc_object\\*\\', expected \\'MyClass\\*\\'" } */
+  obj_cp2 = obj_p; /* { dg-warning "incompatible Objective-C types assigning \\'objc_object\\*\\', expected \\'MyOtherClass\\*\\'" } */
   obj_p = obj_cp;  /* Ok */
   obj_p = obj_cp2; /* Ok */
 
diff --git a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/message-metadata-1.mm b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/message-metadata-1.mm
index 2b31c9b..72ce699 100644
--- a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/message-metadata-1.mm
+++ b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/message-metadata-1.mm
@@ -1,6 +1,6 @@
-/* APPLE LOCAL file radar 4582204 */
+/* APPLE LOCAL file radar 4582204 - radar 5575115 */
 /* Test that message_ref_t meta-data is generated for for objc and obj-c++ */
-/* { dg-options "-fobjc-abi-version=2 -mmacosx-version-min=10.5" } */
+/* { dg-options "-fobjc-abi-version=2 -mmacosx-version-min=10.6" } */
 /* { dg-do compile } */
 /* APPLE LOCAL ARM hybrid ABI */
 /* { dg-skip-if "" { arm*-*-darwin* } { "*" } { "" } } */
@@ -11,4 +11,4 @@
 int main() {
     [Foo class];
 }
-/* { dg-final { scan-assembler "OBJC_MESSAGE_REF.*:" } } */
+/* { dg-final { scan-assembler "l_objc_msgSend_fixup.*:" } } */
diff --git a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/objc2-instanceSizeStart-1.mm b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/objc2-instanceSizeStart-1.mm
index e519784..2e82e58 100644
--- a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/objc2-instanceSizeStart-1.mm
+++ b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/objc2-instanceSizeStart-1.mm
@@ -1,6 +1,6 @@
-/* APPLE LOCAL file radar 5333233 */
+/* APPLE LOCAL file radar 5333233  - radar 6064186 */
 /* { dg-do compile { target powerpc*-*-darwin* i?86*-*-darwin* } } */
-/* { dg-options "-mmacosx-version-min=10.5 -m64" } */
+/* { dg-options "-mmacosx-version-min=10.6 -m64" } */
 
 @interface Super { id isa; } @end
 @implementation Super @end
@@ -11,4 +11,4 @@
 @implementation SubNoIvars @end
 
 int main() { return 0; }
-/* { dg-final { scan-assembler "L_ZL27_OBJC_CLASS_RO_\\\$_SubNoIvars:\n\t.long\t0\n\t.long\t8\n\t.long\t8" } } */
+/* { dg-final { scan-assembler "l_OBJC_CLASS_RO_\\\$_SubNoIvars:\n\t.long\t0\n\t.long\t8\n\t.long\t8" } } */
diff --git a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/property-metadata-1.mm b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/property-metadata-1.mm
index 68b9734..5f89958 100644
--- a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/property-metadata-1.mm
+++ b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/property-metadata-1.mm
@@ -1,9 +1,9 @@
-/* APPLE LOCAL file radar 4695101 */
+/* APPLE LOCAL file radar 4695101 - radar 6064186 */
 /* Test that @implementation <protoname> syntax generates metadata for properties 
    declared in @protocol, as well as those declared in the @interface. */
-/* { dg-do compile { target *-*-darwin* } } */
+/* { dg-do compile { target powerpc*-*-darwin* i?86*-*-darwin* } } */
 /* APPLE LOCAL radar 4899595 */
-/* { dg-options "-mmacosx-version-min=10.5 -m64" { target powerpc*-*-darwin* i?86*-*-darwin* } } */
+/* { dg-options "-mmacosx-version-min=10.6 -m64" } */
 
 @protocol GCObject
 @property(readonly) unsigned long int instanceSize;
@@ -23,6 +23,6 @@
 @end
 
 /* LLVM LOCAL begin accept llvm syntax */
-/* { dg-final { scan-assembler "L_.*OBJC_\\\$_PROP_LIST_GCObject:" } } */
-/* { dg-final { scan-assembler "L_.*OBJC_\\\$_PROP_PROTO_LIST_GCObject:" } } */
+/* { dg-final { scan-assembler "l_.*OBJC_\\\$_PROP_LIST_GCObject:" } } */
+/* { dg-final { scan-assembler "l_.*OBJC_\\\$_PROP_PROTO_LIST_GCObject:" } } */
 /* LLVM LOCAL end */
diff --git a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/property-synthesize-ivar-3.mm b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/property-synthesize-ivar-3.mm
index 527ceb8..eb85db8 100644
--- a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/property-synthesize-ivar-3.mm
+++ b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/property-synthesize-ivar-3.mm
@@ -1,6 +1,6 @@
 /* APPLE LOCAL file radar 5435299 */
 /* Multiple @synthesize of a single property is error. */
-/* { dg-options "-fnew-property-ivar-synthesis -mmacosx-version-min=10.5" { target powerpc*-*-darwin* i?86*-*-darwin* } } */
+/* { dg-options "-mmacosx-version-min=10.5 -fnew-property-ivar-synthesis" { target powerpc*-*-darwin* i?86*-*-darwin* } } */
 /* { dg-options "-fnew-property-ivar-synthesis -fobjc-new-property" { target arm*-*-darwin* } } */
 /* { dg-do compile { target *-*-darwin* } } */
 
@@ -13,7 +13,7 @@
 @property int prop;
 @end
 @implementation Test3
-@synthesize prop;
+@synthesize prop;	/* { dg-error "previous property declaration of \\'prop\\' was here" } */
 @synthesize prop;  /* { dg-error "synthesized properties \\'prop\\' and \\'prop\\' both claim ivar \\'prop\\'" } */
 		   /* { dg-error "property \\'prop\\' is already implemented" "" { target *-*-* } 17 } */
 @end
diff --git a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/property-synthesize-ivar-32-5.mm b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/property-synthesize-ivar-32-5.mm
index 0c9ae2e..c011ec6 100644
--- a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/property-synthesize-ivar-32-5.mm
+++ b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/property-synthesize-ivar-32-5.mm
@@ -14,7 +14,7 @@
 @property int prop2;
 @end
 @implementation Test5_1
-@synthesize ivar;
+@synthesize ivar; /* { dg-error "previous property declaration of \\'ivar\\' was here" } */
 @synthesize prop2 = ivar; /* { dg-error "synthesized properties \\'prop2\\' and \\'ivar\\' both claim ivar \\'ivar\\'" } */
 @end
 
@@ -26,7 +26,7 @@
 @property int ivar;
 @end
 @implementation Test5_2
-@synthesize prop2 = ivar;
+@synthesize prop2 = ivar;  /* { dg-error "previous property declaration of \\'prop2\\' was here" } */
 @synthesize ivar; /* { dg-error "synthesized properties \\'ivar\\' and \\'prop2\\' both claim ivar \\'ivar\\'" } */
 @end
 
@@ -38,6 +38,6 @@
 @property int prop2;
 @end
 @implementation Test5_3
-@synthesize prop1 = ivar;
+@synthesize prop1 = ivar;  /* { dg-error "previous property declaration of \\'prop1\\' was here" } */
 @synthesize prop2 = ivar; /* { dg-error "synthesized properties \\'prop2\\' and \\'prop1\\' both claim ivar \\'ivar\\'" } */
 @end
diff --git a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/property-synthesize-ivar-5.mm b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/property-synthesize-ivar-5.mm
index 495912d..8f7e5fa 100644
--- a/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/property-synthesize-ivar-5.mm
+++ b/llvm-gcc-4.2/gcc/testsuite/obj-c++.dg/property-synthesize-ivar-5.mm
@@ -16,7 +16,7 @@
 @property int prop2;
 @end
 @implementation Test5_1
-@synthesize ivar;
+@synthesize ivar;	/* { dg-error "previous property declaration of \\'ivar\\' was here" } */
 @synthesize prop2 = ivar; /* { dg-error "synthesized properties \\'prop2\\' and \\'ivar\\' both claim ivar \\'ivar\\'" } */
 @end
 
@@ -28,7 +28,7 @@
 @property int ivar;
 @end
 @implementation Test5_2
-@synthesize prop2 = ivar;
+@synthesize prop2 = ivar;	/* { dg-error "previous property declaration of \\'prop2\\' was here" } */
 @synthesize ivar; /* { dg-error "synthesized properties \\'ivar\\' and \\'prop2\\' both claim ivar \\'ivar\\'" } */
 @end
 
@@ -40,7 +40,7 @@
 @property int prop2;
 @end
 @implementation Test5_3
-@synthesize prop1 = ivar;
+@synthesize prop1 = ivar; /* { dg-error "previous property declaration of \\'prop1\\' was here" } */
 @synthesize prop2 = ivar; /* { dg-error "synthesized properties \\'prop2\\' and \\'prop1\\' both claim ivar \\'ivar\\'" } */
 @end
 
@@ -50,7 +50,7 @@
 @property int prop2;
 @end
 @implementation Test5_4
-@synthesize prop1;
+@synthesize prop1; /* { dg-error "previous property declaration of \\'prop1\\' was here" } */
 @synthesize prop2 = prop1; /* { dg-error "synthesized properties \\'prop2\\' and \\'prop1\\' both claim ivar \\'prop1\\'" } */
 @end
 
@@ -59,7 +59,7 @@
 @property int prop2;
 @end
 @implementation Test5_5
-@synthesize prop1 = prop2;
+@synthesize prop1 = prop2;  /* { dg-error "previous property declaration of \\'prop1\\' was here" } */
 @synthesize prop2; /* { dg-error "synthesized properties \\'prop2\\' and \\'prop1\\' both claim ivar \\'prop2\\'" } */
 @end
 
@@ -68,7 +68,7 @@
 @property int prop2;
 @end
 @implementation Test5_6
-@synthesize prop1 = ivar;
+@synthesize prop1 = ivar; /* { dg-error "previous property declaration of \\'prop1\\' was here" } */
 @synthesize prop2 = ivar; /* { dg-error "synthesized properties \\'prop2\\' and \\'prop1\\' both claim ivar \\'ivar\\'" } */
 @end
 
diff --git a/llvm-gcc-4.2/gcc/testsuite/objc.dg/class-protocol-1.m b/llvm-gcc-4.2/gcc/testsuite/objc.dg/class-protocol-1.m
index 68f74b1..343b8ad 100644
--- a/llvm-gcc-4.2/gcc/testsuite/objc.dg/class-protocol-1.m
+++ b/llvm-gcc-4.2/gcc/testsuite/objc.dg/class-protocol-1.m
@@ -1,3 +1,4 @@
+/* APPLE LOCAL file radar 5839123 */
 /* Check Class <protocol> types */
 /* Author: David Ayers <d.ayers@inode.at> */
 /* { dg-do compile } */
@@ -187,9 +188,9 @@
   [cls doItInstance7];      /* { dg-warning "no .\\+doItInstance7. method found" } */
 
   [clsP7 doItClass7];       /* { dg-warning "not found in protocol" } */
-  /* { dg-warning "no .\\+doItClass7. method found" "" { target *-*-* } 189 } */
+  /* { dg-warning "no .\\+doItClass7. method found" "" { target *-*-* } 190 } */
   [clsP7 doItInstance7];    /* { dg-warning "not found in protocol" } */
-  /* { dg-warning "no .\\+doItInstance7. method found" "" { target *-*-* } 191 } */
+  /* { dg-warning "no .\\+doItInstance7. method found" "" { target *-*-* } 192 } */
 
   [MyClass1 doItClass7];    /* { dg-warning "may not respond" } */
   [MyClass1 doItInstance7]; /* { dg-warning "may not respond" } */
@@ -382,8 +383,8 @@
     objP1 = obj;
   }
   { /* id <protocol>, Class  */
-    cls = objP1; /* { dg-warning "distinct Objective\\-C type" } */
-    objP1 = cls; /* { dg-warning "distinct Objective\\-C type" } */
+    cls = objP1; /* { dg-warning "incompatible Objective-C types assigning \\'id\\', expected \\'Class\\'" } */
+    objP1 = cls; /* { dg-warning "incompatible Objective-C types assigning \\'Class\\', expected \\'id\\'" } */
   }
   { /* id <protocol>, non-ObjC  */
     num = objP1; /* { dg-warning "makes integer" } */
@@ -401,11 +402,11 @@
   }
   { /* Class <protocol>, SomeClass * */
     /* These combinations should always elicit a warning.  */
-    mc1 = clsP1; /* { dg-warning "distinct Objective\\-C type" } */
-    clsP1 = mc1; /* { dg-warning "distinct Objective\\-C type" } */
+    mc1 = clsP1; /* { dg-warning "incompatible Objective-C types assigning \\'Class\\', expected \\'struct MyClass1 \\*\\'" } */
+    clsP1 = mc1; /* { dg-warning "incompatible Objective-C types assigning \\'struct MyClass1 \\*\\', expected \\'Class\\'" } */
     
-    mc1 = clsP2; /* { dg-warning "distinct Objective\\-C type" } */
-    clsP2 = mc1; /* { dg-warning "distinct Objective\\-C type" } */
+    mc1 = clsP2; /* { dg-warning "incompatible Objective-C types assigning \\'Class\\', expected \\'struct MyClass1 \\*\\'" } */
+    clsP2 = mc1; /* { dg-warning "incompatible Objective-C types assigning \\'struct MyClass1 \\*\\', expected \\'Class\\'" } */
   }
   { /* Class <protocol>, id */
     obj = clsP1;
@@ -423,8 +424,8 @@
     clsP1 = ptr;
   }
   { /* Class <protocol>, id <protocol> */
-    clsP1 = objP1; /* { dg-warning "distinct Objective\\-C type" } */
-    objP1 = clsP1; /* { dg-warning "distinct Objective\\-C type" } */
+    clsP1 = objP1; /* { dg-warning "incompatible Objective-C types assigning \\'id\\', expected \\'Class\\'" } */
+    objP1 = clsP1; /* { dg-warning "incompatible Objective-C types assigning \\'Class\\', expected \\'id\\'" } */
   }
 }
 
diff --git a/llvm-gcc-4.2/gcc/testsuite/objc.dg/comp-types-1.m b/llvm-gcc-4.2/gcc/testsuite/objc.dg/comp-types-1.m
index 5bf59a7..684d32e 100644
--- a/llvm-gcc-4.2/gcc/testsuite/objc.dg/comp-types-1.m
+++ b/llvm-gcc-4.2/gcc/testsuite/objc.dg/comp-types-1.m
@@ -1,3 +1,4 @@
+/* APPLE LOCAL file radar 5839123 */
 /* Test various ObjC types assignments and comparisons.  */
 /* Author: Nicola Pero <nicola@brainstorm.co.uk>.  */
 /* { dg-do compile } */
@@ -32,9 +33,9 @@
   /* Assigning to a 'MyClass *' variable should always generate a
      warning, unless done from an 'id'.  */
   obj_c = obj;    /* Ok */
-  obj_c = obj_p;  /* { dg-warning "distinct Objective\\-C type" } */
-  obj_c = obj_cp; /* { dg-warning "distinct Objective\\-C type" } */
-  obj_c = obj_C;  /* { dg-warning "distinct Objective\\-C type" } */
+  obj_c = obj_p;  /* { dg-warning "incompatible Objective-C types assigning \\'id\\', expected \\'struct MyClass \\*\\'" } */
+  obj_c = obj_cp; /* { dg-warning "incompatible Objective-C types assigning \\'struct MyOtherClass \\*\\', expected \\'struct MyClass \\*\\'" } */
+  obj_c = obj_C;  /* { dg-warning "incompatible Objective-C types assigning \\'Class\\', expected \\'struct MyClass \\*\\'" } */
 
   /* Assigning to an 'id<MyProtocol>' variable should generate a
      warning if done from a 'MyClass *' (which doesn't implement
@@ -43,15 +44,15 @@
   obj_p = obj;    /* Ok */
   obj_p = obj_c;  /* { dg-warning "does not implement" } */
   obj_p = obj_cp; /* Ok  */
-  obj_p = obj_C;  /* { dg-warning "distinct Objective\\-C type" } */
+  obj_p = obj_C;  /* { dg-warning "incompatible Objective-C types assigning \\'Class\\', expected \\'id\\'" } */
 
   /* Assigning to a 'MyOtherClass *' variable should always generate
      a warning, unless done from an 'id' or an 'id<MyProtocol>' (since
      MyOtherClass implements MyProtocol).  */
   obj_cp = obj;    /* Ok */
-  obj_cp = obj_c;  /* { dg-warning "distinct Objective\\-C type" } */
+  obj_cp = obj_c;  /* { dg-warning "incompatible Objective-C types assigning \\'struct MyClass \\*\\', expected \\'struct MyOtherClass \\*\\'" } */
   obj_cp = obj_p;  /* Ok */
-  obj_cp = obj_C;  /* { dg-warning "distinct Objective\\-C type" } */
+  obj_cp = obj_C;  /* { dg-warning "incompatible Objective-C types assigning \\'Class\\', expected \\'struct MyOtherClass \\*\\'" } */
 
   /* Any comparison involving an 'id' must be without warnings.  */
   if (obj == obj_p) ;  /* Ok  */ /*Bogus warning here in 2.95.4*/
diff --git a/llvm-gcc-4.2/gcc/testsuite/objc.dg/comp-types-10.m b/llvm-gcc-4.2/gcc/testsuite/objc.dg/comp-types-10.m
index a5a3a4a..ca9309e 100644
--- a/llvm-gcc-4.2/gcc/testsuite/objc.dg/comp-types-10.m
+++ b/llvm-gcc-4.2/gcc/testsuite/objc.dg/comp-types-10.m
@@ -25,7 +25,7 @@
 @implementation Derived2
 + (Derived1 *)new {
   Derived2 *o = [super new];
-  return o;  /* { dg-warning "distinct Objective\\-C type in return" } */
+  return o;  /* { dg-warning "incompatible Objective-C types returning \\'struct Derived2 \\*\\', expected \\'struct Derived1 \\*\\'" } */
 }
 @end
 
diff --git a/llvm-gcc-4.2/gcc/testsuite/objc.dg/comp-types-11.m b/llvm-gcc-4.2/gcc/testsuite/objc.dg/comp-types-11.m
index b041759..1937a76 100644
--- a/llvm-gcc-4.2/gcc/testsuite/objc.dg/comp-types-11.m
+++ b/llvm-gcc-4.2/gcc/testsuite/objc.dg/comp-types-11.m
@@ -1,3 +1,4 @@
+/* APPLE LOCAL file radar 5839123 */
 /* { dg-do compile } */
 #include <objc/Object.h>
 
@@ -7,7 +8,7 @@
 extern Object* foo(void);
 static Derived *test(void)
 {
-   Derived *m = foo();   /* { dg-warning "initialization from distinct Objective\\-C type" } */
+   Derived *m = foo();   /* { dg-warning "incompatible Objective-C types initializing \\'struct Object \\*\\', expected \\'struct Derived \\*\\'" } */
 
    return m;
 }
diff --git a/llvm-gcc-4.2/gcc/testsuite/objc.dg/comp-types-6.m b/llvm-gcc-4.2/gcc/testsuite/objc.dg/comp-types-6.m
index e235581..58d6f0d 100644
--- a/llvm-gcc-4.2/gcc/testsuite/objc.dg/comp-types-6.m
+++ b/llvm-gcc-4.2/gcc/testsuite/objc.dg/comp-types-6.m
@@ -1,3 +1,4 @@
+/* APPLE LOCAL file radar 5839123 */
 /* Test assignments and comparisons involving category protocols.  */
 /* Author: Nicola Pero <nicola@brainstorm.co.uk>.  */
 /* { dg-do compile } */
@@ -24,8 +25,8 @@
   MyClass *obj_cp = nil;
   MyOtherClass *obj_cp2 = nil;
 
-  obj_cp = obj_p;  /* { dg-warning "distinct Objective\\-C type" } */
-  obj_cp2 = obj_p; /* { dg-warning "distinct Objective\\-C type" } */
+  obj_cp = obj_p;  /* { dg-warning "incompatible Objective-C types assigning \\'id\\', expected \\'struct MyClass \\*\\'" } */
+  obj_cp2 = obj_p; /* { dg-warning "incompatible Objective-C types assigning \\'id\\', expected \\'struct MyOtherClass \\*\\'" } */
   obj_p = obj_cp;  /* Ok */
   obj_p = obj_cp2; /* Ok */
 
diff --git a/llvm-gcc-4.2/gcc/testsuite/objc.dg/message-metadata-1.m b/llvm-gcc-4.2/gcc/testsuite/objc.dg/message-metadata-1.m
index cfb12b2..0a50675 100644
--- a/llvm-gcc-4.2/gcc/testsuite/objc.dg/message-metadata-1.m
+++ b/llvm-gcc-4.2/gcc/testsuite/objc.dg/message-metadata-1.m
@@ -1,6 +1,6 @@
-/* APPLE LOCAL file radar 4582204 */
+/* APPLE LOCAL file radar 4582204 - radar 5575115 */
 /* Test that message_ref_t meta-data is generated for for objc and obj-c++ */
-/* { dg-options "-fobjc-abi-version=2 -mmacosx-version-min=10.5" { target powerpc*-*-darwin* i?86*-*-darwin* } } */
+/* { dg-options "-fobjc-abi-version=2 -mmacosx-version-min=10.6" { target powerpc*-*-darwin* i?86*-*-darwin* } } */
 /* { dg-options "-fno-objc-legacy-dispatch" { target arm*-*-darwin* } } */
 /* { dg-do compile } */
 
@@ -10,4 +10,4 @@
 int main() {
     [Foo class];
 }
-/* { dg-final { scan-assembler "OBJC_MESSAGE_REF.*:" } } */
+/* { dg-final { scan-assembler "l_objc_msgSend_fixup.*:" } } */
diff --git a/llvm-gcc-4.2/gcc/testsuite/objc.dg/method-9.m b/llvm-gcc-4.2/gcc/testsuite/objc.dg/method-9.m
index b8ea46b..6bc609b 100644
--- a/llvm-gcc-4.2/gcc/testsuite/objc.dg/method-9.m
+++ b/llvm-gcc-4.2/gcc/testsuite/objc.dg/method-9.m
@@ -39,7 +39,7 @@
 
      /* The following warning is a consequence of picking the "wrong" method signature.  */
      /* APPLE LOCAL mainline */
-     /* { dg-warning "passing argument 1 of .initWithData:. from distinct Objective\\-C type" "" { target *-*-* } 34 } */
+     /* { dg-warning "incompatible Objective-C types \\'id\\', expected \\'struct Object \\*\\' when passing argument 1 of \\'initWithData:\\' from distinct" "" { target *-*-* } 34 } */
     return result;
 }
 @end
diff --git a/llvm-gcc-4.2/gcc/testsuite/objc.dg/objc2-warn-prev-osx-1.m b/llvm-gcc-4.2/gcc/testsuite/objc.dg/objc2-warn-prev-osx-1.m
index 11db111..2332a8b 100644
--- a/llvm-gcc-4.2/gcc/testsuite/objc.dg/objc2-warn-prev-osx-1.m
+++ b/llvm-gcc-4.2/gcc/testsuite/objc.dg/objc2-warn-prev-osx-1.m
@@ -1,6 +1,6 @@
 /* APPLE LOCAL file radar 4531086 */
 /* Test for warning on usage of objc2 features on older os's. */
-/* { dg-options "-mmacosx-version-min=10.5 -fobjc-abi-version=2 -fobjc-new-property -mmacosx-version-min=10.4 -std=c99" } */
+/* { dg-options "-mmacosx-version-min=10.4 -fobjc-abi-version=2 -fobjc-new-property -std=c99" } */
 /* { dg-do compile { target powerpc*-*-darwin* i?86*-*-darwin* } } */
 
 #include <objc/objc.h>
diff --git a/llvm-gcc-4.2/gcc/testsuite/objc.dg/property-metadata-1.m b/llvm-gcc-4.2/gcc/testsuite/objc.dg/property-metadata-1.m
index d7305b6..175c885 100644
--- a/llvm-gcc-4.2/gcc/testsuite/objc.dg/property-metadata-1.m
+++ b/llvm-gcc-4.2/gcc/testsuite/objc.dg/property-metadata-1.m
@@ -1,9 +1,9 @@
-/* APPLE LOCAL file radar 4695101 */
+/* APPLE LOCAL file radar 4695101 - radar 6064186 */
 /* Test that @implementation <protoname> syntax generates metadata for properties 
    declared in @protocol, as well as those declared in the @interface. */
 /* { dg-do compile { target powerpc*-*-darwin* i?86*-*-darwin* } } */
 /* APPLE LOCAL radar 4899595 */
-/* { dg-options "-mmacosx-version-min=10.5 -m64" } */
+/* { dg-options "-mmacosx-version-min=10.6 -m64" } */
 
 @protocol GCObject
 @property(readonly) unsigned long int instanceSize;
diff --git a/llvm-gcc-4.2/gcc/testsuite/objc.dg/property-synthesize-ivar-3.m b/llvm-gcc-4.2/gcc/testsuite/objc.dg/property-synthesize-ivar-3.m
index db12609..eb85db8 100644
--- a/llvm-gcc-4.2/gcc/testsuite/objc.dg/property-synthesize-ivar-3.m
+++ b/llvm-gcc-4.2/gcc/testsuite/objc.dg/property-synthesize-ivar-3.m
@@ -13,7 +13,7 @@
 @property int prop;
 @end
 @implementation Test3
-@synthesize prop;
+@synthesize prop;	/* { dg-error "previous property declaration of \\'prop\\' was here" } */
 @synthesize prop;  /* { dg-error "synthesized properties \\'prop\\' and \\'prop\\' both claim ivar \\'prop\\'" } */
 		   /* { dg-error "property \\'prop\\' is already implemented" "" { target *-*-* } 17 } */
 @end
diff --git a/llvm-gcc-4.2/gcc/testsuite/objc.dg/property-synthesize-ivar-32-5.m b/llvm-gcc-4.2/gcc/testsuite/objc.dg/property-synthesize-ivar-32-5.m
index 0c9ae2e..c011ec6 100644
--- a/llvm-gcc-4.2/gcc/testsuite/objc.dg/property-synthesize-ivar-32-5.m
+++ b/llvm-gcc-4.2/gcc/testsuite/objc.dg/property-synthesize-ivar-32-5.m
@@ -14,7 +14,7 @@
 @property int prop2;
 @end
 @implementation Test5_1
-@synthesize ivar;
+@synthesize ivar; /* { dg-error "previous property declaration of \\'ivar\\' was here" } */
 @synthesize prop2 = ivar; /* { dg-error "synthesized properties \\'prop2\\' and \\'ivar\\' both claim ivar \\'ivar\\'" } */
 @end
 
@@ -26,7 +26,7 @@
 @property int ivar;
 @end
 @implementation Test5_2
-@synthesize prop2 = ivar;
+@synthesize prop2 = ivar;  /* { dg-error "previous property declaration of \\'prop2\\' was here" } */
 @synthesize ivar; /* { dg-error "synthesized properties \\'ivar\\' and \\'prop2\\' both claim ivar \\'ivar\\'" } */
 @end
 
@@ -38,6 +38,6 @@
 @property int prop2;
 @end
 @implementation Test5_3
-@synthesize prop1 = ivar;
+@synthesize prop1 = ivar;  /* { dg-error "previous property declaration of \\'prop1\\' was here" } */
 @synthesize prop2 = ivar; /* { dg-error "synthesized properties \\'prop2\\' and \\'prop1\\' both claim ivar \\'ivar\\'" } */
 @end
diff --git a/llvm-gcc-4.2/gcc/testsuite/objc.dg/property-synthesize-ivar-5.m b/llvm-gcc-4.2/gcc/testsuite/objc.dg/property-synthesize-ivar-5.m
index 495912d..8f7e5fa 100644
--- a/llvm-gcc-4.2/gcc/testsuite/objc.dg/property-synthesize-ivar-5.m
+++ b/llvm-gcc-4.2/gcc/testsuite/objc.dg/property-synthesize-ivar-5.m
@@ -16,7 +16,7 @@
 @property int prop2;
 @end
 @implementation Test5_1
-@synthesize ivar;
+@synthesize ivar;	/* { dg-error "previous property declaration of \\'ivar\\' was here" } */
 @synthesize prop2 = ivar; /* { dg-error "synthesized properties \\'prop2\\' and \\'ivar\\' both claim ivar \\'ivar\\'" } */
 @end
 
@@ -28,7 +28,7 @@
 @property int ivar;
 @end
 @implementation Test5_2
-@synthesize prop2 = ivar;
+@synthesize prop2 = ivar;	/* { dg-error "previous property declaration of \\'prop2\\' was here" } */
 @synthesize ivar; /* { dg-error "synthesized properties \\'ivar\\' and \\'prop2\\' both claim ivar \\'ivar\\'" } */
 @end
 
@@ -40,7 +40,7 @@
 @property int prop2;
 @end
 @implementation Test5_3
-@synthesize prop1 = ivar;
+@synthesize prop1 = ivar; /* { dg-error "previous property declaration of \\'prop1\\' was here" } */
 @synthesize prop2 = ivar; /* { dg-error "synthesized properties \\'prop2\\' and \\'prop1\\' both claim ivar \\'ivar\\'" } */
 @end
 
@@ -50,7 +50,7 @@
 @property int prop2;
 @end
 @implementation Test5_4
-@synthesize prop1;
+@synthesize prop1; /* { dg-error "previous property declaration of \\'prop1\\' was here" } */
 @synthesize prop2 = prop1; /* { dg-error "synthesized properties \\'prop2\\' and \\'prop1\\' both claim ivar \\'prop1\\'" } */
 @end
 
@@ -59,7 +59,7 @@
 @property int prop2;
 @end
 @implementation Test5_5
-@synthesize prop1 = prop2;
+@synthesize prop1 = prop2;  /* { dg-error "previous property declaration of \\'prop1\\' was here" } */
 @synthesize prop2; /* { dg-error "synthesized properties \\'prop2\\' and \\'prop1\\' both claim ivar \\'prop2\\'" } */
 @end
 
@@ -68,7 +68,7 @@
 @property int prop2;
 @end
 @implementation Test5_6
-@synthesize prop1 = ivar;
+@synthesize prop1 = ivar; /* { dg-error "previous property declaration of \\'prop1\\' was here" } */
 @synthesize prop2 = ivar; /* { dg-error "synthesized properties \\'prop2\\' and \\'prop1\\' both claim ivar \\'ivar\\'" } */
 @end
 
