diff options
author | NAKAMURA Takumi <geek4civic@gmail.com> | 2015-11-19 15:03:11 +0000 |
---|---|---|
committer | NAKAMURA Takumi <geek4civic@gmail.com> | 2015-11-19 15:03:11 +0000 |
commit | b6b254582fe4d3108b5238551cce0ed5da6284d6 (patch) | |
tree | 5b685020d9e4961689f02e7e819866dd02c2e8e1 /llvm/lib/Support/TargetParser.cpp | |
parent | 33efdf810f2c81e0bec1f5426b7690103be6d8d2 (diff) | |
download | bcm5719-llvm-b6b254582fe4d3108b5238551cce0ed5da6284d6.tar.gz bcm5719-llvm-b6b254582fe4d3108b5238551cce0ed5da6284d6.zip |
llvm/lib/Support/TargetParser.cpp: Rework llvm::ARM::getArchExtFeature() to avoid abuse of Twine in r253470.
llvm-svn: 253566
Diffstat (limited to 'llvm/lib/Support/TargetParser.cpp')
-rw-r--r-- | llvm/lib/Support/TargetParser.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/llvm/lib/Support/TargetParser.cpp b/llvm/lib/Support/TargetParser.cpp index 213275ab009..371ae35c54a 100644 --- a/llvm/lib/Support/TargetParser.cpp +++ b/llvm/lib/Support/TargetParser.cpp @@ -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; |