[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