forked from OSchip/llvm-project
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
This commit is contained in:
parent
ecd1d9bc1d
commit
60f62ad3d3
|
@ -631,11 +631,6 @@ def ReqdWorkGroupSize : InheritableAttr {
|
||||||
UnsignedArgument<"ZDim">];
|
UnsignedArgument<"ZDim">];
|
||||||
}
|
}
|
||||||
|
|
||||||
def Endian : InheritableAttr {
|
|
||||||
let Spellings = [GNU<"endian">];
|
|
||||||
let Args = [IdentifierArgument<"platform">];
|
|
||||||
}
|
|
||||||
|
|
||||||
def WorkGroupSizeHint : InheritableAttr {
|
def WorkGroupSizeHint : InheritableAttr {
|
||||||
let Spellings = [GNU<"work_group_size_hint">];
|
let Spellings = [GNU<"work_group_size_hint">];
|
||||||
let Args = [UnsignedArgument<"XDim">,
|
let Args = [UnsignedArgument<"XDim">,
|
||||||
|
|
|
@ -2902,24 +2902,6 @@ static void handleVecTypeHint(Sema &S, Decl *D, const AttributeList &Attr) {
|
||||||
ParmType, Attr.getLoc()));
|
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,
|
SectionAttr *Sema::mergeSectionAttr(Decl *D, SourceRange Range,
|
||||||
StringRef Name,
|
StringRef Name,
|
||||||
unsigned AttrSpellingListIndex) {
|
unsigned AttrSpellingListIndex) {
|
||||||
|
@ -4917,10 +4899,6 @@ static void ProcessDeclAttribute(Sema &S, Scope *scope, Decl *D,
|
||||||
case AttributeList::AT_VecTypeHint:
|
case AttributeList::AT_VecTypeHint:
|
||||||
handleVecTypeHint(S, D, Attr); break;
|
handleVecTypeHint(S, D, Attr); break;
|
||||||
|
|
||||||
case AttributeList::AT_Endian:
|
|
||||||
handleEndianAttr(S, D, Attr);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case AttributeList::AT_InitPriority:
|
case AttributeList::AT_InitPriority:
|
||||||
handleInitPriorityAttr(S, D, Attr); break;
|
handleInitPriorityAttr(S, D, Attr); break;
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,3 @@
|
||||||
// RUN: %clang_cc1 %s -verify -fsyntax-only
|
// RUN: %clang_cc1 %s -verify -fsyntax-only
|
||||||
|
|
||||||
int p1 __attribute__((endian(host)));
|
int p1 __attribute__((endian(host))); // expected-warning {{unknown attribute 'endian' ignored}}
|
||||||
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}}
|
|
||||||
|
|
|
@ -1,9 +1,3 @@
|
||||||
// RUN: %clang_cc1 -verify %s
|
// RUN: %clang_cc1 -verify %s
|
||||||
|
|
||||||
constant long a __attribute__((endian(host))) = 100;
|
constant long a __attribute__((endian(host))) = 100; // expected-warning {{unknown attribute 'endian' ignored}}
|
||||||
|
|
||||||
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}}
|
|
||||||
|
|
Loading…
Reference in New Issue