summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/TargetParser.cpp
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2015-08-30 09:01:38 +0000
committerChandler Carruth <chandlerc@gmail.com>2015-08-30 09:01:38 +0000
commit822d54a22cc3ac908593b13129b573f76b50aa13 (patch)
treee5d1a96d530c910b511ff7467e693145620c2ab1 /llvm/lib/Support/TargetParser.cpp
parent982e8d48f82d86d6d3030845e01a94de65ee7f2c (diff)
downloadbcm5719-llvm-822d54a22cc3ac908593b13129b573f76b50aa13.tar.gz
bcm5719-llvm-822d54a22cc3ac908593b13129b573f76b50aa13.zip
Remove a linear walk to find the default FPU for a given CPU by directly
expanding the .def file within a StringSwitch. llvm-svn: 246377
Diffstat (limited to 'llvm/lib/Support/TargetParser.cpp')
-rw-r--r--llvm/lib/Support/TargetParser.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/llvm/lib/Support/TargetParser.cpp b/llvm/lib/Support/TargetParser.cpp
index 3280035dca9..4f5d9acba51 100644
--- a/llvm/lib/Support/TargetParser.cpp
+++ b/llvm/lib/Support/TargetParser.cpp
@@ -110,13 +110,12 @@ struct {
const char *NameCStr;
size_t NameLength;
ARM::ArchKind ArchID;
- ARM::FPUKind DefaultFPU;
bool Default; // is $Name the default CPU for $ArchID ?
StringRef getName() const { return StringRef(NameCStr, NameLength); }
} CPUNames[] = {
#define ARM_CPU_NAME(NAME, ID, DEFAULT_FPU, IS_DEFAULT) \
- { NAME, sizeof(NAME) - 1, ID, DEFAULT_FPU, IS_DEFAULT },
+ { NAME, sizeof(NAME) - 1, ID, IS_DEFAULT },
#include "llvm/Support/ARMTargetParser.def"
};
@@ -151,11 +150,11 @@ unsigned llvm::ARM::getFPURestriction(unsigned FPUKind) {
}
unsigned llvm::ARM::getDefaultFPU(StringRef CPU) {
- for (const auto C : CPUNames) {
- if (CPU == C.getName())
- return C.DefaultFPU;
- }
- return ARM::FK_INVALID;
+ return StringSwitch<unsigned>(CPU)
+#define ARM_CPU_NAME(NAME, ID, DEFAULT_FPU, IS_DEFAULT) \
+ .Case(NAME, DEFAULT_FPU)
+#include "llvm/Support/ARMTargetParser.def"
+ .Default(ARM::FK_INVALID);
}
bool llvm::ARM::getHWDivFeatures(unsigned HWDivKind,
OpenPOWER on IntegriCloud