diff --git a/include/clang/AST/Attr.h b/include/clang/AST/Attr.h
index dd6f28f..0ae0acb 100644
--- a/include/clang/AST/Attr.h
+++ b/include/clang/AST/Attr.h
@@ -27,22 +27,22 @@
   enum Kind {
     Alias,
     Aligned,
-    Packed,
     Annotate,
-    NonNull,
-    NoReturn,
     Deprecated,
-    Weak,
     DLLImport,
     DLLExport,
-    NoThrow,
+    FastCall,    
     Format,
-    Visibility,
-    FastCall,
+    IBOutletKind, // Clang-specific.  Use "Kind" suffix to not conflict with
+    NonNull,
+    NoReturn,
+    NoThrow,
+    Packed,
     StdCall,
     TransparentUnion,
-    IBOutletKind // Clang-specific.  Use "Kind" suffix to not conflict with
-                 // the IBOutlet macro.
+    Unused,    
+    Visibility,
+    Weak
   };
     
 private:
@@ -157,6 +157,15 @@
   static bool classof(const DeprecatedAttr *A) { return true; }
 };
 
+class UnusedAttr : public Attr {
+public:
+  UnusedAttr() : Attr(Unused) {}
+  
+  // Implement isa/cast/dyncast/etc.
+  static bool classof(const Attr *A) { return A->getKind() == Unused; }  
+  static bool classof(const UnusedAttr *A) { return true; }
+};  
+  
 class WeakAttr : public Attr {
 public:
   WeakAttr() : Attr(Weak) {}
diff --git a/lib/Sema/SemaDeclAttr.cpp b/lib/Sema/SemaDeclAttr.cpp
index 04e3f05..9a38f6cf 100644
--- a/lib/Sema/SemaDeclAttr.cpp
+++ b/lib/Sema/SemaDeclAttr.cpp
@@ -339,6 +339,25 @@
   d->addAttr(new NoReturnAttr());
 }
 
+static void HandleUnusedAttr(Decl *d, const AttributeList &Attr, Sema &S) {
+  // check the attribute arguments.
+  if (Attr.getNumArgs() != 0) {
+    S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments,
+           std::string("0"));
+    return;
+  }
+  
+  VarDecl *VD = dyn_cast<VarDecl>(d);
+  
+  if (!VD) {
+    S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type,
+           "unused", "variable");
+    return;
+  }
+  
+  d->addAttr(new UnusedAttr());
+}
+
 static void HandleDeprecatedAttr(Decl *d, const AttributeList &Attr, Sema &S) {
   // check the attribute arguments.
   if (Attr.getNumArgs() != 0) {
@@ -826,6 +845,7 @@
   case AttributeList::AT_format:      HandleFormatAttr    (D, Attr, S); break;
   case AttributeList::AT_IBOutlet:    HandleIBOutletAttr  (D, Attr, S); break;
   case AttributeList::AT_nonnull:     HandleNonNullAttr   (D, Attr, S); break;
+  case AttributeList::AT_unused:      HandleUnusedAttr    (D, Attr, S); break;
   case AttributeList::AT_transparent_union:
     HandleTransparentUnionAttr(D, Attr, S);
     break;
