Rename objc_lifetime -> objc_ownership, and modify diagnostics to talk about 'ownership', not 'lifetime'.

rdar://9477613.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133779 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/ARCMT/checking.m b/test/ARCMT/checking.m
index 8ee7e80..b68ff02 100644
--- a/test/ARCMT/checking.m
+++ b/test/ARCMT/checking.m
@@ -59,7 +59,7 @@
   s = @selector(autorelease); // expected-error {{ARC forbids use of 'autorelease' in a @selector}}
   s = @selector(dealloc); // expected-error {{ARC forbids use of 'dealloc' in a @selector}}
 
-  static id __autoreleasing X1; // expected-error {{global variables cannot have __autoreleasing lifetime}}
+  static id __autoreleasing X1; // expected-error {{global variables cannot have __autoreleasing ownership}}
 }
 
 struct S {
@@ -100,7 +100,7 @@
   (void)(int*)arg; // expected-error {{disallowed}}
   (void)(id)arg;
   (void)(__autoreleasing id*)arg; // expected-error {{disallowed}}
-  (void)(id*)arg; // expected-error {{pointer to non-const type 'id' with no explicit lifetime}} expected-error {{disallowed}}
+  (void)(id*)arg; // expected-error {{pointer to non-const type 'id' with no explicit ownership}} expected-error {{disallowed}}
 
   (void)(__autoreleasing id**)voidp_val;
   (void)(void*)voidp_val;
diff --git a/test/SemaObjC/arc-decls.m b/test/SemaObjC/arc-decls.m
index c7efde0..e713d23 100644
--- a/test/SemaObjC/arc-decls.m
+++ b/test/SemaObjC/arc-decls.m
@@ -22,7 +22,7 @@
 @end
 
 struct S { 
-    id __attribute__((objc_lifetime(none))) i;
+    id __attribute__((objc_ownership(none))) i;
     void * vp;
     int i1;
 };
@@ -31,17 +31,17 @@
 
 @class NSError;
 
-__autoreleasing id X; // expected-error {{global variables cannot have __autoreleasing lifetime}}
-__autoreleasing NSError *E; // expected-error {{global variables cannot have __autoreleasing lifetime}}
+__autoreleasing id X; // expected-error {{global variables cannot have __autoreleasing ownership}}
+__autoreleasing NSError *E; // expected-error {{global variables cannot have __autoreleasing ownership}}
 
 
-extern id __autoreleasing X1; // expected-error {{global variables cannot have __autoreleasing lifetime}}
+extern id __autoreleasing X1; // expected-error {{global variables cannot have __autoreleasing ownership}}
 
 void func()
 {
     id X;
-    static id __autoreleasing X1; // expected-error {{global variables cannot have __autoreleasing lifetime}}
-    extern id __autoreleasing E; // expected-error {{global variables cannot have __autoreleasing lifetime}}
+    static id __autoreleasing X1; // expected-error {{global variables cannot have __autoreleasing ownership}}
+    extern id __autoreleasing E; // expected-error {{global variables cannot have __autoreleasing ownership}}
 
 }
 
diff --git a/test/SemaObjC/arc-non-pod-memaccess.m b/test/SemaObjC/arc-non-pod-memaccess.m
index 62d07ae..46392bd 100644
--- a/test/SemaObjC/arc-non-pod-memaccess.m
+++ b/test/SemaObjC/arc-non-pod-memaccess.m
@@ -21,35 +21,35 @@
   memset(aip, 0, 17);
   memset(uip, 0, 17);
 
-  memcpy(sip, ptr, 17); // expected-warning{{destination for this 'memcpy' call is a pointer to lifetime-qualified type}} \
+  memcpy(sip, ptr, 17); // expected-warning{{destination for this 'memcpy' call is a pointer to ownership-qualified type}} \
                       // expected-note{{explicitly cast the pointer to silence this warning}}
-  memcpy(wip, ptr, 17); // expected-warning{{destination for this 'memcpy' call is a pointer to lifetime-qualified type}} \
+  memcpy(wip, ptr, 17); // expected-warning{{destination for this 'memcpy' call is a pointer to ownership-qualified type}} \
                       // expected-note{{explicitly cast the pointer to silence this warning}}
-  memcpy(aip, ptr, 17); // expected-warning{{destination for this 'memcpy' call is a pointer to lifetime-qualified type}} \
+  memcpy(aip, ptr, 17); // expected-warning{{destination for this 'memcpy' call is a pointer to ownership-qualified type}} \
                       // expected-note{{explicitly cast the pointer to silence this warning}}
   memcpy(uip, ptr, 17);
 
-  memcpy(ptr, sip, 17); // expected-warning{{source of this 'memcpy' call is a pointer to lifetime-qualified type}} \
+  memcpy(ptr, sip, 17); // expected-warning{{source of this 'memcpy' call is a pointer to ownership-qualified type}} \
                       // expected-note{{explicitly cast the pointer to silence this warning}}
-  memcpy(ptr, wip, 17); // expected-warning{{source of this 'memcpy' call is a pointer to lifetime-qualified type}} \
+  memcpy(ptr, wip, 17); // expected-warning{{source of this 'memcpy' call is a pointer to ownership-qualified type}} \
                       // expected-note{{explicitly cast the pointer to silence this warning}}
-  memcpy(ptr, aip, 17); // expected-warning{{source of this 'memcpy' call is a pointer to lifetime-qualified type}} \
+  memcpy(ptr, aip, 17); // expected-warning{{source of this 'memcpy' call is a pointer to ownership-qualified type}} \
                       // expected-note{{explicitly cast the pointer to silence this warning}}
   memcpy(ptr, uip, 17);
 
-  memmove(sip, ptr, 17); // expected-warning{{destination for this 'memmove' call is a pointer to lifetime-qualified type}} \
+  memmove(sip, ptr, 17); // expected-warning{{destination for this 'memmove' call is a pointer to ownership-qualified type}} \
                       // expected-note{{explicitly cast the pointer to silence this warning}}
-  memmove(wip, ptr, 17); // expected-warning{{destination for this 'memmove' call is a pointer to lifetime-qualified type}} \
+  memmove(wip, ptr, 17); // expected-warning{{destination for this 'memmove' call is a pointer to ownership-qualified type}} \
                       // expected-note{{explicitly cast the pointer to silence this warning}}
-  memmove(aip, ptr, 17); // expected-warning{{destination for this 'memmove' call is a pointer to lifetime-qualified type}} \
+  memmove(aip, ptr, 17); // expected-warning{{destination for this 'memmove' call is a pointer to ownership-qualified type}} \
                       // expected-note{{explicitly cast the pointer to silence this warning}}
   memmove(uip, ptr, 17);
 
-  memmove(ptr, sip, 17); // expected-warning{{source of this 'memmove' call is a pointer to lifetime-qualified type}} \
+  memmove(ptr, sip, 17); // expected-warning{{source of this 'memmove' call is a pointer to ownership-qualified type}} \
                       // expected-note{{explicitly cast the pointer to silence this warning}}
-  memmove(ptr, wip, 17); // expected-warning{{source of this 'memmove' call is a pointer to lifetime-qualified type}} \
+  memmove(ptr, wip, 17); // expected-warning{{source of this 'memmove' call is a pointer to ownership-qualified type}} \
                       // expected-note{{explicitly cast the pointer to silence this warning}}
-  memmove(ptr, aip, 17); // expected-warning{{source of this 'memmove' call is a pointer to lifetime-qualified type}} \
+  memmove(ptr, aip, 17); // expected-warning{{source of this 'memmove' call is a pointer to ownership-qualified type}} \
                       // expected-note{{explicitly cast the pointer to silence this warning}}
   memmove(ptr, uip, 17);
 }
diff --git a/test/SemaObjC/arc-property-decl-attrs.m b/test/SemaObjC/arc-property-decl-attrs.m
index 4a661ee..0a139c5 100644
--- a/test/SemaObjC/arc-property-decl-attrs.m
+++ b/test/SemaObjC/arc-property-decl-attrs.m
@@ -5,7 +5,7 @@
 @public
     id __unsafe_unretained x;
     id __weak y;
-    id __autoreleasing z; // expected-error {{ivars cannot have __autoreleasing lifetime}}
+    id __autoreleasing z; // expected-error {{ivars cannot have __autoreleasing ownership}}
 }
 @property(strong) id x;
 @property(strong) id y;
@@ -16,7 +16,7 @@
 @public
     id __unsafe_unretained x;
     id __weak y;
-    id __autoreleasing z; // expected-error {{ivars cannot have __autoreleasing lifetime}}
+    id __autoreleasing z; // expected-error {{ivars cannot have __autoreleasing ownership}}
 }
 @property(retain) id x;
 @property(retain) id y;
@@ -27,7 +27,7 @@
 @public
     id __unsafe_unretained x;
     id __weak y;
-    id __autoreleasing z; // expected-error {{ivars cannot have __autoreleasing lifetime}}
+    id __autoreleasing z; // expected-error {{ivars cannot have __autoreleasing ownership}}
 }
 @property(copy) id x;
 @property(copy) id y;
diff --git a/test/SemaObjC/arc-property-lifetime.m b/test/SemaObjC/arc-property-lifetime.m
index c2571a5..99f6d2d 100644
--- a/test/SemaObjC/arc-property-lifetime.m
+++ b/test/SemaObjC/arc-property-lifetime.m
@@ -5,7 +5,7 @@
 @public
     id __unsafe_unretained x;
     id __weak y;
-    id __autoreleasing z; // expected-error {{ivars cannot have __autoreleasing lifetime}}
+    id __autoreleasing z; // expected-error {{ivars cannot have __autoreleasing ownership}}
 }
 @property(strong) id x; // expected-note {{property declared here}}
 @property(strong) id y; // expected-note {{property declared here}}
@@ -22,7 +22,7 @@
 @public
     id __unsafe_unretained x;
     id __weak y;
-    id __autoreleasing z; // expected-error {{ivars cannot have __autoreleasing lifetime}}
+    id __autoreleasing z; // expected-error {{ivars cannot have __autoreleasing ownership}}
 }
 @property(retain) id x; // expected-note {{property declared here}}
 @property(retain) id y; // expected-note {{property declared here}}
@@ -39,7 +39,7 @@
 @public
     id __unsafe_unretained x;
     id __weak y;
-    id __autoreleasing z; // expected-error {{ivars cannot have __autoreleasing lifetime}}
+    id __autoreleasing z; // expected-error {{ivars cannot have __autoreleasing ownership}}
 }
 @property(copy) id x; // expected-note {{property declared here}}
 @property(copy) id y; // expected-note {{property declared here}} 
diff --git a/test/SemaObjC/arc-property.m b/test/SemaObjC/arc-property.m
index 641ae1f..c62448d 100644
--- a/test/SemaObjC/arc-property.m
+++ b/test/SemaObjC/arc-property.m
@@ -33,7 +33,7 @@
 @public
     id __unsafe_unretained x;   // should be __weak
     id __strong y;
-    id __autoreleasing z; // expected-error {{ivars cannot have __autoreleasing lifetime}}
+    id __autoreleasing z; // expected-error {{ivars cannot have __autoreleasing ownership}}
 }
 @property(weak) id x; // expected-note {{property declared here}}
 @property(weak) id y; // expected-note {{property declared here}}
diff --git a/test/SemaObjC/arc-system-header.m b/test/SemaObjC/arc-system-header.m
index 9d8aaf4..3f17657 100644
--- a/test/SemaObjC/arc-system-header.m
+++ b/test/SemaObjC/arc-system-header.m
@@ -24,7 +24,7 @@
 
 // workaround expected-note {{marked unavailable here}}
 void test5(struct Test5 *p) {
-  p->field = 0; // expected-error {{'field' is unavailable: this system field has retaining lifetime}}
+  p->field = 0; // expected-error {{'field' is unavailable: this system field has retaining ownership}}
 }
 
 id test6() {
diff --git a/test/SemaObjC/arc-type-conversion.m b/test/SemaObjC/arc-type-conversion.m
index e723a63..1c38597 100644
--- a/test/SemaObjC/arc-type-conversion.m
+++ b/test/SemaObjC/arc-type-conversion.m
@@ -6,7 +6,7 @@
   (void)(int*)arg; // expected-error {{cast of an Objective-C pointer to 'int *' is disallowed with ARC}}
   (void)(id)arg;
   (void)(__autoreleasing id*)arg; // expected-error {{cast of an Objective-C pointer to '__autoreleasing id *' is disallowed with ARC}}
-  (void)(id*)arg; // expected-error {{pointer to non-const type 'id' with no explicit lifetime}} expected-error {{cast of an Objective-C pointer to '__autoreleasing id *' is disallowed with ARC}}
+  (void)(id*)arg; // expected-error {{pointer to non-const type 'id' with no explicit ownership}} expected-error {{cast of an Objective-C pointer to '__autoreleasing id *' is disallowed with ARC}}
 
   (void)(__autoreleasing id**)voidp_val;
   (void)(void*)voidp_val;
diff --git a/test/SemaObjC/arc.m b/test/SemaObjC/arc.m
index 88d3f0c..4877930 100644
--- a/test/SemaObjC/arc.m
+++ b/test/SemaObjC/arc.m
@@ -329,7 +329,7 @@
 }
 
 void test15() {
-  __block __autoreleasing id x; // expected-error {{__block variables cannot have __autoreleasing lifetime}}
+  __block __autoreleasing id x; // expected-error {{__block variables cannot have __autoreleasing ownership}}
 }
 
 struct Test16;
@@ -397,16 +397,16 @@
 }
 
 // rdar://problem/8951453
-static __thread id test20_implicit; // expected-error {{thread-local variable has non-trivial lifetime: type is '__strong id'}}
-static __thread __strong id test20_strong; // expected-error {{thread-local variable has non-trivial lifetime: type is '__strong id'}}
-static __thread __weak id test20_weak; // expected-error {{thread-local variable has non-trivial lifetime: type is '__weak id'}}
-static __thread __autoreleasing id test20_autoreleasing; // expected-error {{thread-local variable has non-trivial lifetime: type is '__autoreleasing id'}} expected-error {{global variables cannot have __autoreleasing lifetime}}
+static __thread id test20_implicit; // expected-error {{thread-local variable has non-trivial ownership: type is '__strong id'}}
+static __thread __strong id test20_strong; // expected-error {{thread-local variable has non-trivial ownership: type is '__strong id'}}
+static __thread __weak id test20_weak; // expected-error {{thread-local variable has non-trivial ownership: type is '__weak id'}}
+static __thread __autoreleasing id test20_autoreleasing; // expected-error {{thread-local variable has non-trivial ownership: type is '__autoreleasing id'}} expected-error {{global variables cannot have __autoreleasing ownership}}
 static __thread __unsafe_unretained id test20_unsafe;
 void test20(void) {
-  static __thread id test20_implicit; // expected-error {{thread-local variable has non-trivial lifetime: type is '__strong id'}}
-  static __thread __strong id test20_strong; // expected-error {{thread-local variable has non-trivial lifetime: type is '__strong id'}}
-  static __thread __weak id test20_weak; // expected-error {{thread-local variable has non-trivial lifetime: type is '__weak id'}}
-  static __thread __autoreleasing id test20_autoreleasing; // expected-error {{thread-local variable has non-trivial lifetime: type is '__autoreleasing id'}} expected-error {{global variables cannot have __autoreleasing lifetime}}
+  static __thread id test20_implicit; // expected-error {{thread-local variable has non-trivial ownership: type is '__strong id'}}
+  static __thread __strong id test20_strong; // expected-error {{thread-local variable has non-trivial ownership: type is '__strong id'}}
+  static __thread __weak id test20_weak; // expected-error {{thread-local variable has non-trivial ownership: type is '__weak id'}}
+  static __thread __autoreleasing id test20_autoreleasing; // expected-error {{thread-local variable has non-trivial ownership: type is '__autoreleasing id'}} expected-error {{global variables cannot have __autoreleasing ownership}}
   static __thread __unsafe_unretained id test20_unsafe;
 }
 
@@ -415,7 +415,7 @@
     return (_Bool)obj;
 }
 
-// Check casting w/ lifetime qualifiers.
+// Check casting w/ ownership qualifiers.
 void test21() {
   __strong id *sip;
   (void)(__weak id *)sip; // expected-error{{casting '__strong id *' to type '__weak id *' changes retain/release properties of pointer}}
@@ -425,7 +425,7 @@
 }
 
 // rdar://problem/9340462
-void test22(id x[]) { // expected-error {{must explicitly describe intended lifetime of an object array parameter}}
+void test22(id x[]) { // expected-error {{must explicitly describe intended ownership of an object array parameter}}
 }
 
 // rdar://problem/9400219
@@ -464,7 +464,7 @@
 
 void test26(id y) {
   extern id test26_var1;
-  __sync_swap(&test26_var1, 0, y); // expected-error {{cannot perform atomic operation on a pointer to type '__strong id': type has non-trivial lifetime}}
+  __sync_swap(&test26_var1, 0, y); // expected-error {{cannot perform atomic operation on a pointer to type '__strong id': type has non-trivial ownership}}
 
   extern __unsafe_unretained id test26_var2;
   __sync_swap(&test26_var2, 0, y);
diff --git a/test/SemaObjCXX/arc-non-pod.mm b/test/SemaObjCXX/arc-non-pod.mm
index 6a7b910..6c809bb 100644
--- a/test/SemaObjCXX/arc-non-pod.mm
+++ b/test/SemaObjCXX/arc-non-pod.mm
@@ -21,7 +21,7 @@
 }
 
 // Don't complain if the Objective-C pointer type was explicitly given
-// no lifetime.
+// no ownership.
 struct HasObjectMember3 { 
   __unsafe_unretained id x[3][2];
 };
@@ -107,7 +107,7 @@
 @interface Crufty {
   union {
     struct {
-      id object; // expected-note{{has __strong lifetime}}
+      id object; // expected-note{{has __strong ownership}}
     } an_object; // expected-error{{union member 'an_object' has a non-trivial copy constructor}}
     void *ptr;
   } storage;
diff --git a/test/SemaObjCXX/arc-object-init-destroy.mm b/test/SemaObjCXX/arc-object-init-destroy.mm
index a691f0b..515dbf8 100644
--- a/test/SemaObjCXX/arc-object-init-destroy.mm
+++ b/test/SemaObjCXX/arc-object-init-destroy.mm
@@ -37,7 +37,7 @@
 
   // ... but not for arrays.
   typedef id id_array[2][3];
-  (void)new id_array; // expected-error{{'new' cannot allocate an array of 'id' with no explicit lifetime}}
+  (void)new id_array; // expected-error{{'new' cannot allocate an array of 'id' with no explicit ownership}}
 
   typedef __strong id strong_id_array[2][3];
   typedef __strong id strong_id_3[3];
diff --git a/test/SemaObjCXX/arc-overloading.mm b/test/SemaObjCXX/arc-overloading.mm
index fb4a0e4..8141171 100644
--- a/test/SemaObjCXX/arc-overloading.mm
+++ b/test/SemaObjCXX/arc-overloading.mm
@@ -1,7 +1,7 @@
 // RUN: %clang_cc1 -fobjc-nonfragile-abi -fsyntax-only -fobjc-arc -verify -fblocks %s
 
-// Simple lifetime conversions + diagnostics.
-int &f0(id __strong const *); // expected-note{{candidate function not viable: 1st argument ('__weak id *') has __weak lifetime, but parameter has __strong lifetime}}
+// Simple ownership conversions + diagnostics.
+int &f0(id __strong const *); // expected-note{{candidate function not viable: 1st argument ('__weak id *') has __weak ownership, but parameter has __strong ownership}}
 
 void test_f0() {
   id __strong *sip;
@@ -46,7 +46,7 @@
   id __autoreleasing *aip;
   id __unsafe_unretained *uip;
 
-  // Prefer non-lifetime conversions to lifetime conversions.
+  // Prefer non-ownership conversions to ownership conversions.
   int &ir1 = f2(sip);
   int &ir2 = f2(csip);
   float &fr1 = f2(aip);
@@ -55,7 +55,7 @@
 }
 
 // Writeback conversion
-int &f3(id __autoreleasing *); // expected-note{{candidate function not viable: 1st argument ('__unsafe_unretained id *') has __unsafe_unretained lifetime, but parameter has __autoreleasing lifetime}}
+int &f3(id __autoreleasing *); // expected-note{{candidate function not viable: 1st argument ('__unsafe_unretained id *') has __unsafe_unretained ownership, but parameter has __autoreleasing ownership}}
 
 void test_f3() {
   id __strong *sip;
@@ -116,9 +116,9 @@
 }
 
 // Reference binding
-void f7(__strong id&); // expected-note{{candidate function not viable: 1st argument ('__weak id') has __weak lifetime, but parameter has __strong lifetime}} \
- // expected-note{{candidate function not viable: 1st argument ('__autoreleasing id') has __autoreleasing lifetime, but parameter has __strong lifetime}} \
- // expected-note{{candidate function not viable: 1st argument ('__unsafe_unretained id') has __unsafe_unretained lifetime, but parameter has __strong lifetime}}
+void f7(__strong id&); // expected-note{{candidate function not viable: 1st argument ('__weak id') has __weak ownership, but parameter has __strong ownership}} \
+ // expected-note{{candidate function not viable: 1st argument ('__autoreleasing id') has __autoreleasing ownership, but parameter has __strong ownership}} \
+ // expected-note{{candidate function not viable: 1st argument ('__unsafe_unretained id') has __unsafe_unretained ownership, but parameter has __strong ownership}}
 
 void test_f7() {
   __strong id strong_id;
diff --git a/test/SemaObjCXX/arc-system-header.mm b/test/SemaObjCXX/arc-system-header.mm
index 75bed42..cb2b858 100644
--- a/test/SemaObjCXX/arc-system-header.mm
+++ b/test/SemaObjCXX/arc-system-header.mm
@@ -4,7 +4,7 @@
 
 void f(A* a) {
   a->data.void_ptr = 0;
-  a->data.a_b.b = 0; // expected-error{{'a_b' is unavailable: this system field has retaining lifetime}}
+  a->data.a_b.b = 0; // expected-error{{'a_b' is unavailable: this system field has retaining ownership}}
 }
 // Silly location below
 // expected-note{{declaration has been explicitly marked unavailable here}}
diff --git a/test/SemaObjCXX/arc-type-conversion.mm b/test/SemaObjCXX/arc-type-conversion.mm
index d1a4121..b7da703 100644
--- a/test/SemaObjCXX/arc-type-conversion.mm
+++ b/test/SemaObjCXX/arc-type-conversion.mm
@@ -7,7 +7,7 @@
   (void)(int*)arg; // expected-error {{cast of an Objective-C pointer to 'int *' is disallowed with ARC}}
   (void)(id)arg;
   (void)(__autoreleasing id*)arg; // expected-error{{C-style cast from 'id' to '__autoreleasing id *' casts away qualifiers}}
-  (void)(id*)arg; // expected-error {{pointer to non-const type 'id' with no explicit lifetime}} \
+  (void)(id*)arg; // expected-error {{pointer to non-const type 'id' with no explicit ownership}} \
   // expected-error{{C-style cast from 'id' to '__autoreleasing id *' casts away qualifiers}}
 
   (void)(__autoreleasing id**)voidp_val;
@@ -43,7 +43,7 @@
   (void)static_cast<id>(arg);
   (void)static_cast<__autoreleasing id*>(arg); // expected-error{{cannot cast from type 'id' to pointer type '__autoreleasing id *'}}
   (void)static_cast<id*>(arg); // expected-error {{cannot cast from type 'id' to pointer type '__autoreleasing id *'}} \
-  // expected-error{{pointer to non-const type 'id' with no explicit lifetime}}
+  // expected-error{{pointer to non-const type 'id' with no explicit ownership}}
 
   (void)static_cast<__autoreleasing id**>(voidp_val);
   (void)static_cast<void*>(voidp_val);
@@ -57,8 +57,8 @@
 
 void test_const_cast(__strong id *sip, __weak id *wip, 
                      const __strong id *csip, __weak const id *cwip) {
-  // Cannot use const_cast to cast between lifetime qualifications or
-  // add/remove lifetime qualifications.
+  // Cannot use const_cast to cast between ownership qualifications or
+  // add/remove ownership qualifications.
   (void)const_cast<__strong id *>(wip); // expected-error{{is not allowed}}
   (void)const_cast<__weak id *>(sip); // expected-error{{is not allowed}}
 
@@ -69,7 +69,7 @@
 
 void test_reinterpret_cast(__strong id *sip, __weak id *wip, 
                            const __strong id *csip, __weak const id *cwip) {
-  // Okay to reinterpret_cast to add/remove/change lifetime
+  // Okay to reinterpret_cast to add/remove/change ownership
   // qualifications.
   (void)reinterpret_cast<__strong id *>(wip);
   (void)reinterpret_cast<__weak id *>(sip);
@@ -83,7 +83,7 @@
 
 void test_cstyle_cast(__strong id *sip, __weak id *wip, 
                       const __strong id *csip, __weak const id *cwip) {
-  // C-style casts aren't allowed to change Objective-C lifetime
+  // C-style casts aren't allowed to change Objective-C ownership
   // qualifiers (beyond what the normal implicit conversion allows).
 
   (void)(__strong id *)wip; // expected-error{{C-style cast from '__weak id *' to '__strong id *' casts away qualifiers}}
@@ -103,7 +103,7 @@
 
 void test_functional_cast(__strong id *sip, __weak id *wip,
                           __autoreleasing id *aip) {
-  // Functional casts aren't allowed to change Objective-C lifetime
+  // Functional casts aren't allowed to change Objective-C ownership
   // qualifiers (beyond what the normal implicit conversion allows).
 
   typedef __strong id *strong_id_pointer;
diff --git a/test/SemaObjCXX/gc-attributes.mm b/test/SemaObjCXX/gc-attributes.mm
index 70a93b2..4549683 100644
--- a/test/SemaObjCXX/gc-attributes.mm
+++ b/test/SemaObjCXX/gc-attributes.mm
@@ -3,7 +3,7 @@
 @interface A
 @end
 
-void f0(__strong A**); // expected-note{{candidate function not viable: 1st argument ('A *__weak *') has __weak lifetime, but parameter has __strong lifetime}}
+void f0(__strong A**); // expected-note{{candidate function not viable: 1st argument ('A *__weak *') has __weak ownership, but parameter has __strong ownership}}
 
 void test_f0() {
   A *a;
@@ -12,7 +12,7 @@
   f0(&a2); // expected-error{{no matching function}}
 }
 
-void f1(__weak A**); // expected-note{{candidate function not viable: 1st argument ('A *__strong *') has __strong lifetime, but parameter has __weak lifetime}}
+void f1(__weak A**); // expected-note{{candidate function not viable: 1st argument ('A *__strong *') has __strong ownership, but parameter has __weak ownership}}
 
 void test_f1() {
   A *a;