1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-02-01 05:01:59 +01:00

llvm/lib/Support/TargetParser.cpp: Rework llvm::ARM::getArchExtFeature() to avoid abuse of Twine in r253470.

llvm-svn: 253566
This commit is contained in:
NAKAMURA Takumi 2015-11-19 15:03:11 +00:00
parent 7d466a8b34
commit eb19f391e2

View File

@ -87,7 +87,6 @@ static const struct {
const char *NegFeature;
StringRef getName() const { return StringRef(NameCStr, NameLength); }
StringRef getNegName() const { return (Twine("no") + getName()).str(); }
} ARCHExtNames[] = {
#define ARM_ARCH_EXT_NAME(NAME, ID, FEATURE, NEGFEATURE) \
{ NAME, sizeof(NAME) - 1, ID, FEATURE, NEGFEATURE },
@ -332,11 +331,16 @@ StringRef llvm::ARM::getArchExtName(unsigned ArchExtKind) {
}
const char *llvm::ARM::getArchExtFeature(StringRef ArchExt) {
if (ArchExt.substr(0, 2) == "no") {
StringRef ArchExtBase(ArchExt.substr(2));
for (const auto AE : ARCHExtNames) {
if (AE.NegFeature && ArchExtBase == AE.getName())
return AE.NegFeature;
}
}
for (const auto AE : ARCHExtNames) {
if (AE.Feature && ArchExt == AE.getName())
return AE.Feature;
else if (AE.NegFeature && ArchExt == AE.getNegName())
return AE.NegFeature;
}
return nullptr;