]> granicus.if.org Git - clang/commitdiff
Change condition under which 'retain'/'copy' are directly evaluated.
authorFariborz Jahanian <fjahanian@apple.com>
Mon, 8 Dec 2008 23:56:17 +0000 (23:56 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Mon, 8 Dec 2008 23:56:17 +0000 (23:56 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60729 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGObjC.cpp

index e95d8e1e566f9fdbbb13335bfe10f7bb1a4e1cf2..845d5ff00ccec4f5557df61caf797b3809d0d3ed 100644 (file)
@@ -148,11 +148,13 @@ void CodeGenFunction::GenerateObjCGetter(const ObjCPropertyImplDecl *PID) {
   StartObjCMethod(OMD);
 
   // Determine if we should use an objc_getProperty call for
-  // this. Non-atomic and properties with assign semantics are
-  // directly evaluated, and in gc-only mode we don't need it at all.
+  // this. Non-atomic properties are directly evaluated.
+  // atomic 'copy' and 'retain' properties are also directly
+  // evaluated in gc-only mode.
   if (CGM.getLangOptions().getGCMode() != LangOptions::GCOnly &&
-      PD->getSetterKind() != ObjCPropertyDecl::Assign &&
-      !(PD->getPropertyAttributes() & ObjCPropertyDecl::OBJC_PR_nonatomic)) {
+      !(PD->getPropertyAttributes() & ObjCPropertyDecl::OBJC_PR_nonatomic) &&
+      (PD->getSetterKind() == ObjCPropertyDecl::Copy ||
+       PD->getSetterKind() == ObjCPropertyDecl::Retain)) {
     llvm::Value *GetPropertyFn = 
       CGM.getObjCRuntime().GetPropertyGetFunction();