[cfe-commits] r64925 - in /cfe/trunk: include/clang/AST/Attr.h include/clang/AST/Type.h lib/CodeGen/CGExpr.cpp lib/Sema/SemaDeclAttr.cpp lib/Sema/SemaType.cpp

Fariborz Jahanian fjahanian at apple.com
Wed Feb 18 09:52:37 PST 2009


Author: fjahanian
Date: Wed Feb 18 11:52:36 2009
New Revision: 64925

URL: http://llvm.org/viewvc/llvm-project?rev=64925&view=rev
Log:
Cleanup objc's gc attributes code no longer needed.
This make warn-weak-field.m to fail (subject of
a followup patch). 
attr-objc-gc.m no passes.

Modified:
    cfe/trunk/include/clang/AST/Attr.h
    cfe/trunk/include/clang/AST/Type.h
    cfe/trunk/lib/CodeGen/CGExpr.cpp
    cfe/trunk/lib/Sema/SemaDeclAttr.cpp
    cfe/trunk/lib/Sema/SemaType.cpp

Modified: cfe/trunk/include/clang/AST/Attr.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Attr.h?rev=64925&r1=64924&r2=64925&view=diff

==============================================================================
--- cfe/trunk/include/clang/AST/Attr.h (original)
+++ cfe/trunk/include/clang/AST/Attr.h Wed Feb 18 11:52:36 2009
@@ -41,7 +41,6 @@
     NonNull,
     NoReturn,
     NoThrow,
-    ObjCGC,
     ObjCNSObject,
     ObjCException,
     Overloadable, // Clang-specific
@@ -429,25 +428,6 @@
   static bool classof(const TransparentUnionAttr *A) { return true; }
 };
 
-class ObjCGCAttr : public Attr {
-public:
-  enum GCAttrTypes {
-    Weak = 0,
-    Strong
-  };
-private:
-  GCAttrTypes GCAttrType;
-public:
-  ObjCGCAttr(GCAttrTypes t) : Attr(ObjCGC), GCAttrType(t) {}
-
-  GCAttrTypes getType() const { return GCAttrType; }
-
-  // Implement isa/cast/dyncast/etc.
-
-  static bool classof(const Attr *A) { return A->getKind() == ObjCGC; }
-  static bool classof(const ObjCGCAttr *A) { return true; }
-};
-
 class ObjCNSObjectAttr : public Attr {
 // Implement isa/cast/dyncast/etc.
 public:

Modified: cfe/trunk/include/clang/AST/Type.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Type.h?rev=64925&r1=64924&r2=64925&view=diff

==============================================================================
--- cfe/trunk/include/clang/AST/Type.h (original)
+++ cfe/trunk/include/clang/AST/Type.h Wed Feb 18 11:52:36 2009
@@ -29,7 +29,6 @@
 namespace clang {
   class ASTContext;
   class Type;
-  class ObjCGCAttr;
   class TypedefDecl;
   class TemplateDecl;
   class TemplateTypeParmDecl;

Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?rev=64925&r1=64924&r2=64925&view=diff

==============================================================================
--- cfe/trunk/lib/CodeGen/CGExpr.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGExpr.cpp Wed Feb 18 11:52:36 2009
@@ -609,12 +609,16 @@
 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 if (Ctx.getLangOptions().ObjC1 &&
+  else 
+#endif
+  if (Ctx.getLangOptions().ObjC1 &&
            Ctx.getLangOptions().getGCMode() != LangOptions::NonGC) {
     // Default behavious under objective-c's gc is for objective-c pointers
     // be treated as though they were declared as __strong.
@@ -925,12 +929,16 @@
   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 if (CGM.getLangOptions().ObjC1 &&
+  else 
+#endif
+  if (CGM.getLangOptions().ObjC1 &&
            CGM.getLangOptions().getGCMode() != LangOptions::NonGC) {
     QualType ExprTy = Field->getType();
     if (getContext().isObjCObjectPointerType(ExprTy))

Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=64925&r1=64924&r2=64925&view=diff

==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Wed Feb 18 11:52:36 2009
@@ -568,35 +568,6 @@
   d->addAttr(new VisibilityAttr(type));
 }
 
-static void HandleObjCGCAttr(Decl *D, const AttributeList &Attr, Sema &S) {
-  if (!Attr.getParameterName()) {    
-    S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_string)
-      << "objc_gc" << 1;
-    return;
-  }
-  
-  if (Attr.getNumArgs() != 0) {
-    S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 1;
-    return;
-  }
-
-  ObjCGCAttr::GCAttrTypes type;
-  if (Attr.getParameterName()->isStr("weak")) {
-    if (isa<FieldDecl>(D) && !isa<ObjCIvarDecl>(D))
-      S.Diag(Attr.getLoc(), diag::warn_attribute_weak_on_field);
-    type = ObjCGCAttr::Weak;
-  }
-  else if (Attr.getParameterName()->isStr("strong"))
-    type = ObjCGCAttr::Strong;
-  else {
-    S.Diag(Attr.getLoc(), diag::warn_attribute_type_not_supported)
-      << "objc_gc" << Attr.getParameterName();
-    return;
-  }
-  
-  D->addAttr(new ObjCGCAttr(type));
-}
-
 static void HandleObjCExceptionAttr(Decl *D, const AttributeList &Attr,
                                     Sema &S) {
   if (Attr.getNumArgs() != 0) {
@@ -1391,7 +1362,8 @@
   switch (Attr.getKind()) {
   case AttributeList::AT_IBOutlet:    HandleIBOutletAttr  (D, Attr, S); break;
   case AttributeList::AT_address_space:
-    // Ignore this, this is a type attribute, handled by ProcessTypeAttributes.
+  case AttributeList::AT_objc_gc:
+    // Ignore these, these are type attributes, handled by ProcessTypeAttributes.
     break;
   case AttributeList::AT_alias:       HandleAliasAttr     (D, Attr, S); break;
   case AttributeList::AT_aligned:     HandleAlignedAttr   (D, Attr, S); break;
@@ -1426,7 +1398,6 @@
   case AttributeList::AT_transparent_union:
     HandleTransparentUnionAttr(D, Attr, S);
     break;
-  case AttributeList::AT_objc_gc:     HandleObjCGCAttr    (D, Attr, S); break;
   case AttributeList::AT_objc_exception:
     HandleObjCExceptionAttr(D, Attr, S);
     break;

Modified: cfe/trunk/lib/Sema/SemaType.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaType.cpp?rev=64925&r1=64924&r2=64925&view=diff

==============================================================================
--- cfe/trunk/lib/Sema/SemaType.cpp (original)
+++ cfe/trunk/lib/Sema/SemaType.cpp Wed Feb 18 11:52:36 2009
@@ -779,15 +779,20 @@
 /// specified type.  The attribute contains 1 argument, weak or strong.
 static void HandleObjCGCTypeAttribute(QualType &Type, 
                                       const AttributeList &Attr, Sema &S){
-  // FIXME. Needs more work for this to make sense.
+  // FIXME. change error code.
   if (Type.getObjCGCAttr() != QualType::GCNone) {
     S.Diag(Attr.getLoc(), diag::err_attribute_address_multiple_qualifiers);
     return;
   }
   
   // Check the attribute arguments.
+  if (!Attr.getParameterName()) {    
+    S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_string)
+      << "objc_gc" << 1;
+    return;
+  }
   QualType::GCAttrTypes attr;
-  if (!Attr.getParameterName() || Attr.getNumArgs() != 0) {
+  if (Attr.getNumArgs() != 0) {
     S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 1;
     return;
   }





More information about the cfe-commits mailing list