diff --git a/include/clang/Basic/DiagnosticSemaKinds.def b/include/clang/Basic/DiagnosticSemaKinds.def
index fc4bfc9..a283b73 100644
--- a/include/clang/Basic/DiagnosticSemaKinds.def
+++ b/include/clang/Basic/DiagnosticSemaKinds.def
@@ -903,6 +903,8 @@
      "invalid %0 argument (expected an ObjC object type)")
 DIAG(error_rethrow_used_outside_catch, ERROR,
      "@throw (rethrow) used outside of a @catch block")
+DIAG(err_attribute_multiple_objc_gc, ERROR,
+     "multiple garbage collection attributes specified for type")
 
 
 // C++ casts
diff --git a/lib/CodeGen/CGExpr.cpp b/lib/CodeGen/CGExpr.cpp
index 4e60cc5..ae8d4b4 100644
--- a/lib/CodeGen/CGExpr.cpp
+++ b/lib/CodeGen/CGExpr.cpp
@@ -609,22 +609,17 @@
 static void SetVarDeclObjCAttribute(ASTContext &Ctx, const Decl *VD, 
                                     const QualType &Ty, LValue &LV)
 {
-#if 0
-// FIXME. ObjCGCAttr no more.
-  if (const ObjCGCAttr *A = VD->getAttr<ObjCGCAttr>()) {
-    ObjCGCAttr::GCAttrTypes attrType = A->getType();
-    LValue::SetObjCType(attrType == ObjCGCAttr::Weak, 
-                        attrType == ObjCGCAttr::Strong, LV);
-  }
-  else 
-#endif
   if (Ctx.getLangOptions().ObjC1 &&
-           Ctx.getLangOptions().getGCMode() != LangOptions::NonGC) {
+      Ctx.getLangOptions().getGCMode() != LangOptions::NonGC) {
+    QualType::GCAttrTypes attr = Ty.getObjCGCAttr();
+    if (attr != QualType::GCNone)
+      LValue::SetObjCType(attr == QualType::Weak, 
+                          attr == QualType::Strong, LV);
     // Default behavious under objective-c's gc is for objective-c pointers
     // be treated as though they were declared as __strong.
-    if (Ctx.isObjCObjectPointerType(Ty))
+    else if (Ctx.isObjCObjectPointerType(Ty))
       LValue::SetObjCType(false, true, LV);
-  }  
+  }
 }
 
 LValue CodeGenFunction::EmitDeclRefLValue(const DeclRefExpr *E) {
@@ -929,21 +924,17 @@
   LValue LV =  
     LValue::MakeAddr(V, 
                      Field->getType().getCVRQualifiers()|CVRQualifiers);
-#if 0
-// FIXME. ObjCGCAttr is no more.
-  if (const ObjCGCAttr *A = Field->getAttr<ObjCGCAttr>()) {
-    ObjCGCAttr::GCAttrTypes attrType = A->getType();
-    // __weak attribute on a field is ignored.
-    LValue::SetObjCType(false, attrType == ObjCGCAttr::Strong, LV);
-  }
-  else 
-#endif
   if (CGM.getLangOptions().ObjC1 &&
-           CGM.getLangOptions().getGCMode() != LangOptions::NonGC) {
-    QualType ExprTy = Field->getType();
-    if (getContext().isObjCObjectPointerType(ExprTy))
+      CGM.getLangOptions().getGCMode() != LangOptions::NonGC) {
+    QualType Ty = Field->getType();
+    QualType::GCAttrTypes attr = Ty.getObjCGCAttr();
+    if (attr != QualType::GCNone)
+      // __weak attribute on a field is ignored.
+      LValue::SetObjCType(false, attr == QualType::Strong, LV);
+    else if (getContext().isObjCObjectPointerType(Ty))
       LValue::SetObjCType(false, true, LV);
-  }  
+    
+  }
   return LV;
 }
 
diff --git a/lib/Sema/SemaType.cpp b/lib/Sema/SemaType.cpp
index 96800dd..dfd024b 100644
--- a/lib/Sema/SemaType.cpp
+++ b/lib/Sema/SemaType.cpp
@@ -781,7 +781,7 @@
                                       const AttributeList &Attr, Sema &S){
   // FIXME. change error code.
   if (Type.getObjCGCAttr() != QualType::GCNone) {
-    S.Diag(Attr.getLoc(), diag::err_attribute_address_multiple_qualifiers);
+    S.Diag(Attr.getLoc(), diag::err_attribute_multiple_objc_gc);
     return;
   }
   
