Rewrite AttributeList::getKind to use StringRef API.

llvm-svn: 84339
This commit is contained in:
Daniel Dunbar 2009-10-17 18:12:29 +00:00
parent 403073e471
commit 5bf78579bd
1 changed files with 5 additions and 8 deletions

View File

@ -45,18 +45,15 @@ AttributeList::~AttributeList() {
}
AttributeList::Kind AttributeList::getKind(const IdentifierInfo *Name) {
const char *Str = Name->getName();
unsigned Len = Name->getLength();
llvm::StringRef AttrName = Name->getNameStr();
// Normalize the attribute name, __foo__ becomes foo.
if (Len > 4 && Str[0] == '_' && Str[1] == '_' &&
Str[Len - 2] == '_' && Str[Len - 1] == '_') {
Str += 2;
Len -= 4;
}
if (AttrName.startswith("__") && AttrName.endswith("__"))
AttrName = AttrName.substr(2, AttrName.size() - 4);
// FIXME: Hand generating this is neither smart nor efficient.
switch (Len) {
const char *Str = AttrName.data();
switch (AttrName.size()) {
case 4:
if (!memcmp(Str, "weak", 4)) return AT_weak;
if (!memcmp(Str, "pure", 4)) return AT_pure;