[cfe-commits] r132866 - in /cfe/trunk: include/clang/AST/DeclObjC.h include/clang/Sema/DeclSpec.h lib/Parse/ParseObjc.cpp lib/Sema/SemaObjCProperty.cpp test/SemaObjC/warn-implicit-atomic-property.m

Fariborz Jahanian fjahanian at apple.com
Fri Jun 10 17:45:13 PDT 2011


Author: fjahanian
Date: Fri Jun 10 19:45:12 2011
New Revision: 132866

URL: http://llvm.org/viewvc/llvm-project?rev=132866&view=rev
Log:
Restore 'atomic' as an attribute of objc
properties.

Modified:
    cfe/trunk/include/clang/AST/DeclObjC.h
    cfe/trunk/include/clang/Sema/DeclSpec.h
    cfe/trunk/lib/Parse/ParseObjc.cpp
    cfe/trunk/lib/Sema/SemaObjCProperty.cpp
    cfe/trunk/test/SemaObjC/warn-implicit-atomic-property.m

Modified: cfe/trunk/include/clang/AST/DeclObjC.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclObjC.h?rev=132866&r1=132865&r2=132866&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/DeclObjC.h (original)
+++ cfe/trunk/include/clang/AST/DeclObjC.h Fri Jun 10 19:45:12 2011
@@ -1380,7 +1380,8 @@
     OBJC_PR_retain    = 0x10,
     OBJC_PR_copy      = 0x20,
     OBJC_PR_nonatomic = 0x40,
-    OBJC_PR_setter    = 0x80
+    OBJC_PR_setter    = 0x80,
+    OBJC_PR_atomic    = 0x100
   };
 
   enum SetterKind { Assign, Retain, Copy };

Modified: cfe/trunk/include/clang/Sema/DeclSpec.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/DeclSpec.h?rev=132866&r1=132865&r2=132866&view=diff
==============================================================================
--- cfe/trunk/include/clang/Sema/DeclSpec.h (original)
+++ cfe/trunk/include/clang/Sema/DeclSpec.h Fri Jun 10 19:45:12 2011
@@ -688,7 +688,8 @@
     DQ_PR_retain = 0x10,
     DQ_PR_copy = 0x20,
     DQ_PR_nonatomic = 0x40,
-    DQ_PR_setter = 0x80
+    DQ_PR_setter = 0x80,
+    DQ_PR_atomic = 0x100
   };
 
 

Modified: cfe/trunk/lib/Parse/ParseObjc.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseObjc.cpp?rev=132866&r1=132865&r2=132866&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/ParseObjc.cpp (original)
+++ cfe/trunk/lib/Parse/ParseObjc.cpp Fri Jun 10 19:45:12 2011
@@ -512,6 +512,8 @@
       DS.setPropertyAttributes(ObjCDeclSpec::DQ_PR_copy);
     else if (II->isStr("nonatomic"))
       DS.setPropertyAttributes(ObjCDeclSpec::DQ_PR_nonatomic);
+    else if (II->isStr("atomic"))
+      DS.setPropertyAttributes(ObjCDeclSpec::DQ_PR_atomic);
     else if (II->isStr("getter") || II->isStr("setter")) {
       bool IsSetter = II->getNameStart()[0] == 's';
 

Modified: cfe/trunk/lib/Sema/SemaObjCProperty.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaObjCProperty.cpp?rev=132866&r1=132865&r2=132866&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaObjCProperty.cpp (original)
+++ cfe/trunk/lib/Sema/SemaObjCProperty.cpp Fri Jun 10 19:45:12 2011
@@ -295,6 +295,8 @@
 
   if (Attributes & ObjCDeclSpec::DQ_PR_nonatomic)
     PDecl->setPropertyAttributes(ObjCPropertyDecl::OBJC_PR_nonatomic);
+  else if (Attributes & ObjCDeclSpec::DQ_PR_atomic)
+    PDecl->setPropertyAttributes(ObjCPropertyDecl::OBJC_PR_atomic);
 
   PDecl->setPropertyAttributesAsWritten(PDecl->getPropertyAttributes());
   
@@ -346,7 +348,8 @@
       return 0;
     }
     unsigned PIkind = property->getPropertyAttributesAsWritten();
-    if ((PIkind & ObjCPropertyDecl::OBJC_PR_nonatomic) == 0) {
+    if ((PIkind & (ObjCPropertyDecl::OBJC_PR_atomic |
+                   ObjCPropertyDecl::OBJC_PR_nonatomic) ) == 0) {
       if (AtLoc.isValid())
         Diag(AtLoc, diag::warn_implicit_atomic_property);
       else
@@ -1088,7 +1091,8 @@
     unsigned Attributes = Property->getPropertyAttributes();
     unsigned AttributesAsWrittern = Property->getPropertyAttributesAsWritten();
 
-    if (!(AttributesAsWrittern & ObjCPropertyDecl::OBJC_PR_nonatomic)) {
+    if (!(AttributesAsWrittern & ObjCPropertyDecl::OBJC_PR_atomic) &&
+        !(AttributesAsWrittern & ObjCPropertyDecl::OBJC_PR_nonatomic)) {
       GetterMethod = IMPDecl->getInstanceMethod(Property->getGetterName());
       SetterMethod = IMPDecl->getInstanceMethod(Property->getSetterName());
       LookedUpGetterSetter = true;

Modified: cfe/trunk/test/SemaObjC/warn-implicit-atomic-property.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/warn-implicit-atomic-property.m?rev=132866&r1=132865&r2=132866&view=diff
==============================================================================
--- cfe/trunk/test/SemaObjC/warn-implicit-atomic-property.m (original)
+++ cfe/trunk/test/SemaObjC/warn-implicit-atomic-property.m Fri Jun 10 19:45:12 2011
@@ -3,11 +3,11 @@
 
 @interface Super
 @property (nonatomic, readwrite) int P; // OK
- at property (readwrite) int P1; // expected-note {{property declared here}}
+ at property (atomic, readwrite) int P1; // OK
 @property (readwrite) int P2; // expected-note {{property declared here}}
 @property int P3; // expected-note {{property declared here}}
 @end
 
 @implementation Super // expected-warning {{property is assumed atomic when auto-synthesizing the property [-Wimplicit-atomic-properties]}}
- at synthesize P,P1,P2; // expected-warning 2 {{property is assumed atomic by default [-Wimplicit-atomic-properties]}}
+ at synthesize P,P1,P2; // expected-warning {{property is assumed atomic by default [-Wimplicit-atomic-properties]}}
 @end





More information about the cfe-commits mailing list