diff --git a/clang.xcodeproj/project.pbxproj b/clang.xcodeproj/project.pbxproj
index 1c29891..746f1a4 100644
--- a/clang.xcodeproj/project.pbxproj
+++ b/clang.xcodeproj/project.pbxproj
@@ -1091,9 +1091,6 @@
 		DEC8D98B0A9433BC00353FCA /* AST */ = {
 			isa = PBXGroup;
 			children = (
-				90FB99DE0F98FB1D008F9415 /* DeclContextInternals.h */,
-				90FB99DF0F98FB1D008F9415 /* DeclVisitor.h */,
-				90FB99E00F98FB1D008F9415 /* ExternalASTSource.h */,
 				DE613EF30E0E148D00B05B79 /* APValue.h */,
 				DEC8D9A30A94346E00353FCA /* AST.h */,
 				35BFBD2B0C9EDE1E006CB644 /* ASTConsumer.h */,
@@ -1102,6 +1099,9 @@
 				1A72BEAC0D641E9400B085E9 /* Attr.h */,
 				DED676D00B6C786700AAD4A3 /* Builtins.def */,
 				DED676F90B6C797B00AAD4A3 /* Builtins.h */,
+				90FB99DE0F98FB1D008F9415 /* DeclContextInternals.h */,
+				90FB99DF0F98FB1D008F9415 /* DeclVisitor.h */,
+				90FB99E00F98FB1D008F9415 /* ExternalASTSource.h */,
 				1A68BC110D0CADDD001A28C8 /* PPCBuiltins.def */,
 				1A68BC130D0CADDD001A28C8 /* X86Builtins.def */,
 				DEC63B1B0C7B940600DBF169 /* CFG.h */,
diff --git a/include/clang/AST/Attr.h b/include/clang/AST/Attr.h
index d8054de..085b51c 100644
--- a/include/clang/AST/Attr.h
+++ b/include/clang/AST/Attr.h
@@ -42,7 +42,7 @@
     Destructor,
     FastCall,    
     Format,
-    GNUCInline,
+    GNUInline,
     IBOutletKind, // Clang-specific.  Use "Kind" suffix to not conflict with
     NoReturn,
     NoThrow,
@@ -222,13 +222,13 @@
 };  
     
   
-class GNUCInlineAttr : public Attr {
+class GNUInlineAttr : public Attr {
 public:
-  GNUCInlineAttr() : Attr(GNUCInline) {}
+  GNUInlineAttr() : Attr(GNUInline) {}
   
   // Implement isa/cast/dyncast/etc.
-  static bool classof(const Attr *A) { return A->getKind() == GNUCInline; }
-  static bool classof(const GNUCInlineAttr *A) { return true; }
+  static bool classof(const Attr *A) { return A->getKind() == GNUInline; }
+  static bool classof(const GNUInlineAttr *A) { return true; }
 };
 
 class IBOutletAttr : public Attr {
diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td
index b9639f0..28a97f8 100644
--- a/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/include/clang/Basic/DiagnosticSemaKinds.td
@@ -411,11 +411,11 @@
 def warn_attribute_wrong_decl_type : Warning<
   "'%0' attribute only applies to %select{function|union|"
   "variable and function|function or method}1 types">;
-def warn_gnuc_inline_attribute_requires_inline : Warning<
-  "'gnuc_inline' attribute requires function to be marked 'inline',"
+def warn_gnu_inline_attribute_requires_inline : Warning<
+  "'gnu_inline' attribute requires function to be marked 'inline',"
   " attribute ignored">;
-def warn_gnuc_inline_attribute_extern_inline : Warning<
- "'gnuc_inline' attribute is overridden by 'extern inline', attribute ignored">;
+def warn_gnu_inline_attribute_extern_inline : Warning<
+ "'gnu_inline' attribute is overridden by 'extern inline', attribute ignored">;
 
 def warn_attribute_ignored_for_field_of_type : Warning<
   "%0 attribute ignored for field of type %1">;
diff --git a/include/clang/Parse/AttributeList.h b/include/clang/Parse/AttributeList.h
index 9111d6d..1e94a71 100644
--- a/include/clang/Parse/AttributeList.h
+++ b/include/clang/Parse/AttributeList.h
@@ -66,7 +66,7 @@
     AT_ext_vector_type,
     AT_fastcall,
     AT_format,
-    AT_gnuc_inline,
+    AT_gnu_inline,
     AT_mode,
     AT_nodebug,
     AT_noinline,
diff --git a/lib/CodeGen/CodeGenModule.cpp b/lib/CodeGen/CodeGenModule.cpp
index 1a52ba2..0526e78 100644
--- a/lib/CodeGen/CodeGenModule.cpp
+++ b/lib/CodeGen/CodeGenModule.cpp
@@ -240,7 +240,7 @@
   
   // If the inline function explicitly has the GNU inline attribute on it, then
   // force to GNUC semantics (which is strong external), regardless of language.
-  if (FD->hasAttr<GNUCInlineAttr>())
+  if (FD->hasAttr<GNUInlineAttr>())
     return CodeGenModule::GVA_StrongExternal;
 
   // The definition of inline changes based on the language.  Note that we
diff --git a/lib/Frontend/PCHReader.cpp b/lib/Frontend/PCHReader.cpp
index 391937b..3975747 100644
--- a/lib/Frontend/PCHReader.cpp
+++ b/lib/Frontend/PCHReader.cpp
@@ -2186,7 +2186,7 @@
       break;
     }
 
-    SIMPLE_ATTR(GNUCInline);
+    SIMPLE_ATTR(GNUInline);
     
     case Attr::IBOutletKind:
       New = ::new (Context) IBOutletAttr();
diff --git a/lib/Frontend/PCHWriter.cpp b/lib/Frontend/PCHWriter.cpp
index afe77ae..9f6c4c1 100644
--- a/lib/Frontend/PCHWriter.cpp
+++ b/lib/Frontend/PCHWriter.cpp
@@ -1696,7 +1696,7 @@
       break;
     }
 
-    case Attr::GNUCInline:
+    case Attr::GNUInline:
     case Attr::IBOutletKind:
     case Attr::NoReturn:
     case Attr::NoThrow:
diff --git a/lib/Parse/AttributeList.cpp b/lib/Parse/AttributeList.cpp
index b49399e..5797a15 100644
--- a/lib/Parse/AttributeList.cpp
+++ b/lib/Parse/AttributeList.cpp
@@ -105,13 +105,13 @@
     if (!memcmp(Str, "destructor", 10)) return AT_destructor;
     if (!memcmp(Str, "format_arg", 10))
       return IgnoredAttribute; // FIXME: printf format string checking.
+    if (!memcmp(Str, "gnu_inline", 10)) return AT_gnu_inline;
     break;
   case 11:
     if (!memcmp(Str, "weak_import", 11)) return AT_weak_import;
     if (!memcmp(Str, "vector_size", 11)) return AT_vector_size;
     if (!memcmp(Str, "constructor", 11)) return AT_constructor;
     if (!memcmp(Str, "unavailable", 11)) return AT_unavailable;
-    if (!memcmp(Str, "gnuc_inline", 11)) return AT_gnuc_inline;
     break;
   case 12:
     if (!memcmp(Str, "overloadable", 12)) return AT_overloadable;
diff --git a/lib/Sema/SemaDeclAttr.cpp b/lib/Sema/SemaDeclAttr.cpp
index f16d343..290c58e 100644
--- a/lib/Sema/SemaDeclAttr.cpp
+++ b/lib/Sema/SemaDeclAttr.cpp
@@ -1455,7 +1455,7 @@
   d->addAttr(::new (S.Context) NoinlineAttr());
 }
 
-static void HandleGNUCInlineAttr(Decl *d, const AttributeList &Attr, Sema &S) {
+static void HandleGNUInlineAttr(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) << 0;
@@ -1465,21 +1465,21 @@
   FunctionDecl *Fn = dyn_cast<FunctionDecl>(d);
   if (Fn == 0) {
     S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type)
-      << "gnuc_inline" << 0 /*function*/;
+      << "gnu_inline" << 0 /*function*/;
     return;
   }
   
   if (!Fn->isInline()) {
-    S.Diag(Attr.getLoc(), diag::warn_gnuc_inline_attribute_requires_inline);
+    S.Diag(Attr.getLoc(), diag::warn_gnu_inline_attribute_requires_inline);
     return;
   }
   
   if (Fn->getStorageClass() == FunctionDecl::Extern) {
-    S.Diag(Attr.getLoc(), diag::warn_gnuc_inline_attribute_extern_inline);
+    S.Diag(Attr.getLoc(), diag::warn_gnu_inline_attribute_extern_inline);
     return;
   }
   
-  d->addAttr(::new (S.Context) GNUCInlineAttr());
+  d->addAttr(::new (S.Context) GNUInlineAttr());
 }
 
 static void HandleRegparmAttr(Decl *d, const AttributeList &Attr, Sema &S) {
@@ -1549,7 +1549,7 @@
     break;
   case AttributeList::AT_fastcall:    HandleFastCallAttr  (D, Attr, S); break;
   case AttributeList::AT_format:      HandleFormatAttr    (D, Attr, S); break;
-  case AttributeList::AT_gnuc_inline: HandleGNUCInlineAttr(D, Attr, S); break;
+  case AttributeList::AT_gnu_inline:  HandleGNUInlineAttr(D, Attr, S); break;
   case AttributeList::AT_mode:        HandleModeAttr      (D, Attr, S); break;
   case AttributeList::AT_nonnull:     HandleNonNullAttr   (D, Attr, S); break;
   case AttributeList::AT_noreturn:    HandleNoReturnAttr  (D, Attr, S); break;
diff --git a/test/CodeGen/inline.c b/test/CodeGen/inline.c
index 8a28305..4821988 100644
--- a/test/CodeGen/inline.c
+++ b/test/CodeGen/inline.c
@@ -36,4 +36,4 @@
 inline void unreferenced1() {}
 extern inline void unreferenced2() {}
 
-__inline __attribute((__gnuc_inline__)) void gnu_inline() {}
+__inline __attribute((__gnu_inline__)) void gnu_inline() {}
diff --git a/test/Sema/function.c b/test/Sema/function.c
index 7e5887a..fa99830 100644
--- a/test/Sema/function.c
+++ b/test/Sema/function.c
@@ -64,11 +64,11 @@
 
 
 extern __inline
-__attribute__((__gnuc_inline__))  // expected-warning{{'gnuc_inline' attribute is overridden by 'extern inline', attribute ignored}} expected-warning{{extension used}}
+__attribute__((__gnu_inline__))  // expected-warning{{'gnu_inline' attribute is overridden by 'extern inline', attribute ignored}} expected-warning{{extension used}}
 void gnu_inline1() {}
 
 void
-__attribute__((__gnuc_inline__)) // expected-warning {{'gnuc_inline' attribute requires function to be marked 'inline', attribute ignored}} expected-warning{{extension used}}
+__attribute__((__gnu_inline__)) // expected-warning {{'gnu_inline' attribute requires function to be marked 'inline', attribute ignored}} expected-warning{{extension used}}
 gnu_inline2() {}
 
 
