Index: include/clang/Basic/Attr.td
===================================================================
--- include/clang/Basic/Attr.td	(revision 196105)
+++ include/clang/Basic/Attr.td	(working copy)
@@ -1165,7 +1165,7 @@
   let Spellings = [Declspec<"selectany">];
 }
 
-def Win64 : InheritableAttr {
+def Win64 : IgnoredAttr {
   let Spellings = [Keyword<"__w64">];
 }
 
Index: lib/Sema/SemaDeclAttr.cpp
===================================================================
--- lib/Sema/SemaDeclAttr.cpp	(revision 196116)
+++ lib/Sema/SemaDeclAttr.cpp	(working copy)
@@ -3944,14 +3944,6 @@
                                       Attr.getAttributeSpellingListIndex()));
 }
 
-static void handleWin64Attr(Sema &S, Decl *D, const AttributeList &Attr) {
-  if (!checkMicrosoftExt(S, Attr))
-    return;
-
-  D->addAttr(::new (S.Context) Win64Attr(Attr.getRange(), S.Context,
-                                       Attr.getAttributeSpellingListIndex()));
-}
-
 static void handleForceInlineAttr(Sema &S, Decl *D, const AttributeList &Attr) {
   if (!checkMicrosoftExt(S, Attr))
     return;
@@ -4225,8 +4217,6 @@
   case AttributeList::AT_VirtualInheritance:
     handleInheritanceAttr(S, D, Attr);
     break;
-  case AttributeList::AT_Win64:
-    handleWin64Attr(S, D, Attr); break;
   case AttributeList::AT_ForceInline:
     handleForceInlineAttr(S, D, Attr);
     break;
Index: lib/Sema/SemaType.cpp
===================================================================
--- lib/Sema/SemaType.cpp	(revision 196100)
+++ lib/Sema/SemaType.cpp	(working copy)
@@ -4942,9 +4942,6 @@
       attr.setUsedAsTypeAttr();
       break;
 
-    case AttributeList::AT_Win64:
-      attr.setUsedAsTypeAttr();
-      break;
     MS_TYPE_ATTRS_CASELIST:
       if (!handleMSPointerTypeQualifierAttr(state, attr, type))
         attr.setUsedAsTypeAttr();
