summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Ballman <aaron@aaronballman.com>2013-09-09 12:57:20 +0000
committerAaron Ballman <aaron@aaronballman.com>2013-09-09 12:57:20 +0000
commit60f62ad3d3ffec573abaf49d04f95f7407c49ba9 (patch)
treea5cf02b985e8c30b8d968f0102c3107ace4180d2
parentecd1d9bc1dea0e73f51f779ecf3c4576cdd84307 (diff)
downloadbcm5719-llvm-60f62ad3d3ffec573abaf49d04f95f7407c49ba9.tar.gz
bcm5719-llvm-60f62ad3d3ffec573abaf49d04f95f7407c49ba9.zip
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
-rw-r--r--clang/include/clang/Basic/Attr.td5
-rw-r--r--clang/lib/Sema/SemaDeclAttr.cpp22
-rw-r--r--clang/test/Sema/attr-endian.c10
-rw-r--r--clang/test/SemaOpenCL/endian-attr.cl8
4 files changed, 2 insertions, 43 deletions
diff --git a/clang/include/clang/Basic/Attr.td b/clang/include/clang/Basic/Attr.td
index 48cd640a864..f6ebaea2bbe 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 39347fa3949..78b963c16ff 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<VarDecl>(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 09442400a55..db24dafd421 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 ba2f0e5c73e..f7766431004 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}}
OpenPOWER on IntegriCloud