From: Chris Lattner Date: Mon, 20 Apr 2009 19:12:28 +0000 (+0000) Subject: the __gnuc_inline__ attribute is actually named __gnu_inline__, X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cf2a7211b4785068c7efa836baab90b198a4d2a6;p=clang the __gnuc_inline__ attribute is actually named __gnu_inline__, PR4023 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69618 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/clang.xcodeproj/project.pbxproj b/clang.xcodeproj/project.pbxproj index 1c298911a0..746f1a4ddf 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 d8054de602..085b51c5ca 100644 --- a/include/clang/AST/Attr.h +++ b/include/clang/AST/Attr.h @@ -42,7 +42,7 @@ public: Destructor, FastCall, Format, - GNUCInline, + GNUInline, IBOutletKind, // Clang-specific. Use "Kind" suffix to not conflict with NoReturn, NoThrow, @@ -222,13 +222,13 @@ public: }; -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 b9639f0aea..28a97f8763 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -411,11 +411,11 @@ def warn_attribute_weak_import_invalid_on_definition : Warning< 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 9111d6dd5b..1e94a71a64 100644 --- a/include/clang/Parse/AttributeList.h +++ b/include/clang/Parse/AttributeList.h @@ -66,7 +66,7 @@ public: 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 1a52ba2ab1..0526e7845c 100644 --- a/lib/CodeGen/CodeGenModule.cpp +++ b/lib/CodeGen/CodeGenModule.cpp @@ -240,7 +240,7 @@ GetLinkageForFunction(const FunctionDecl *FD, const LangOptions &Features) { // 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()) + if (FD->hasAttr()) 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 391937b923..3975747b52 100644 --- a/lib/Frontend/PCHReader.cpp +++ b/lib/Frontend/PCHReader.cpp @@ -2186,7 +2186,7 @@ Attr *PCHReader::ReadAttributes() { 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 afe77aebf8..9f6c4c1be0 100644 --- a/lib/Frontend/PCHWriter.cpp +++ b/lib/Frontend/PCHWriter.cpp @@ -1696,7 +1696,7 @@ void PCHWriter::WriteAttributeRecord(const Attr *Attr) { 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 b49399e880..5797a15408 100644 --- a/lib/Parse/AttributeList.cpp +++ b/lib/Parse/AttributeList.cpp @@ -105,13 +105,13 @@ AttributeList::Kind AttributeList::getKind(const IdentifierInfo *Name) { 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 f16d343dd0..290c58ea8a 100644 --- a/lib/Sema/SemaDeclAttr.cpp +++ b/lib/Sema/SemaDeclAttr.cpp @@ -1455,7 +1455,7 @@ static void HandleNoinlineAttr(Decl *d, const AttributeList &Attr, Sema &S) { 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 @@ static void HandleGNUCInlineAttr(Decl *d, const AttributeList &Attr, Sema &S) { FunctionDecl *Fn = dyn_cast(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 @@ static void ProcessDeclAttribute(Decl *D, const AttributeList &Attr, Sema &S) { 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 8a28305995..4821988733 100644 --- a/test/CodeGen/inline.c +++ b/test/CodeGen/inline.c @@ -36,4 +36,4 @@ int bar() { return foo(); } 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 7e5887a277..fa998300fe 100644 --- a/test/Sema/function.c +++ b/test/Sema/function.c @@ -64,11 +64,11 @@ struct incomplete_test a(void) {} // expected-error{{incomplete result type 'str 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() {}