From 60f62ad3d3ffec573abaf49d04f95f7407c49ba9 Mon Sep 17 00:00:00 2001 From: Aaron Ballman Date: Mon, 9 Sep 2013 12:57:20 +0000 Subject: [PATCH] Removing the endian attribute and updating associated test cases. This functionality was never completely implemented, and this is an improvement over silently eating the attribute. llvm-svn: 190303 --- clang/include/clang/Basic/Attr.td | 5 ----- clang/lib/Sema/SemaDeclAttr.cpp | 22 ---------------------- clang/test/Sema/attr-endian.c | 10 +--------- clang/test/SemaOpenCL/endian-attr.cl | 8 +------- 4 files changed, 2 insertions(+), 43 deletions(-) diff --git a/clang/include/clang/Basic/Attr.td b/clang/include/clang/Basic/Attr.td index 48cd640a864f..f6ebaea2bbe2 100644 --- a/clang/include/clang/Basic/Attr.td +++ b/clang/include/clang/Basic/Attr.td @@ -631,11 +631,6 @@ def ReqdWorkGroupSize : InheritableAttr { UnsignedArgument<"ZDim">]; } -def Endian : InheritableAttr { - let Spellings = [GNU<"endian">]; - let Args = [IdentifierArgument<"platform">]; -} - def WorkGroupSizeHint : InheritableAttr { let Spellings = [GNU<"work_group_size_hint">]; let Args = [UnsignedArgument<"XDim">, diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp index 39347fa39495..78b963c16ffb 100644 --- a/clang/lib/Sema/SemaDeclAttr.cpp +++ b/clang/lib/Sema/SemaDeclAttr.cpp @@ -2902,24 +2902,6 @@ static void handleVecTypeHint(Sema &S, Decl *D, const AttributeList &Attr) { ParmType, Attr.getLoc())); } -static void handleEndianAttr(Sema &S, Decl *D, const AttributeList &Attr) { - if (!Attr.isArgIdent(0)) { - S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_type) - << Attr.getName() << 1 << AANT_ArgumentIdentifier; - return; - } - - if (!checkAttributeNumArgs(S, Attr, 1)) - return; - - if (!dyn_cast(D)) - S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) - << Attr.getName() << ExpectedVariable; - StringRef EndianType = Attr.getArgAsIdent(0)->Ident->getName(); - if (EndianType != "host" && EndianType != "device") - S.Diag(Attr.getLoc(), diag::warn_attribute_unknown_endian) << EndianType; -} - SectionAttr *Sema::mergeSectionAttr(Decl *D, SourceRange Range, StringRef Name, unsigned AttrSpellingListIndex) { @@ -4917,10 +4899,6 @@ static void ProcessDeclAttribute(Sema &S, Scope *scope, Decl *D, case AttributeList::AT_VecTypeHint: handleVecTypeHint(S, D, Attr); break; - case AttributeList::AT_Endian: - handleEndianAttr(S, D, Attr); - break; - case AttributeList::AT_InitPriority: handleInitPriorityAttr(S, D, Attr); break; diff --git a/clang/test/Sema/attr-endian.c b/clang/test/Sema/attr-endian.c index 09442400a556..db24dafd4213 100644 --- a/clang/test/Sema/attr-endian.c +++ b/clang/test/Sema/attr-endian.c @@ -1,11 +1,3 @@ // RUN: %clang_cc1 %s -verify -fsyntax-only -int p1 __attribute__((endian(host))); -int p2 __attribute__((endian(device))); - -int p3 __attribute__((endian)); // expected-error {{'endian' attribute requires parameter 1 to be an identifier}} -int p4 __attribute__((endian("host"))); // expected-error {{'endian' attribute requires parameter 1 to be an identifier}} -int p5 __attribute__((endian(host, 15))); // expected-error {{'endian' attribute takes one argument}} -int p6 __attribute__((endian(strange))); // expected-warning {{unknown endian 'strange'}} - -void func(void) __attribute__((endian(host))); // expected-warning {{'endian' attribute only applies to variables}} +int p1 __attribute__((endian(host))); // expected-warning {{unknown attribute 'endian' ignored}} diff --git a/clang/test/SemaOpenCL/endian-attr.cl b/clang/test/SemaOpenCL/endian-attr.cl index ba2f0e5c73e4..f77664310041 100644 --- a/clang/test/SemaOpenCL/endian-attr.cl +++ b/clang/test/SemaOpenCL/endian-attr.cl @@ -1,9 +1,3 @@ // RUN: %clang_cc1 -verify %s -constant long a __attribute__((endian(host))) = 100; - -constant long b __attribute__((endian(device))) = 100; - -constant long c __attribute__((endian(none))) = 100; // expected-warning {{unknown endian 'none'}} - -void func() __attribute__((endian(host))); // expected-warning {{'endian' attribute only applies to variables}} +constant long a __attribute__((endian(host))) = 100; // expected-warning {{unknown attribute 'endian' ignored}}