summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/TargetParser.cpp
diff options
context:
space:
mode:
authorNAKAMURA Takumi <geek4civic@gmail.com>2015-11-19 15:03:11 +0000
committerNAKAMURA Takumi <geek4civic@gmail.com>2015-11-19 15:03:11 +0000
commitb6b254582fe4d3108b5238551cce0ed5da6284d6 (patch)
tree5b685020d9e4961689f02e7e819866dd02c2e8e1 /llvm/lib/Support/TargetParser.cpp
parent33efdf810f2c81e0bec1f5426b7690103be6d8d2 (diff)
downloadbcm5719-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.cpp10
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;
OpenPOWER on IntegriCloud