]> granicus.if.org Git - clang/commitdiff
ARMTargetParser FIXME getCPUProfile A/R/M
authorRenato Golin <renato.golin@linaro.org>
Wed, 27 May 2015 14:15:12 +0000 (14:15 +0000)
committerRenato Golin <renato.golin@linaro.org>
Wed, 27 May 2015 14:15:12 +0000 (14:15 +0000)
This is the last of the easy ones.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@238324 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Basic/Targets.cpp

index ce3bd48118901e18cb820831ea677039ce9e97cc..a768081e70e0d4636e545defe1e9f52fbd9c5682 100644 (file)
@@ -4346,16 +4346,21 @@ public:
       }
     }
 
-    // FIXME: Use ARMTargetParser
-    return llvm::StringSwitch<const char *>(Name)
-        .Cases("cortex-a5", "cortex-a7", "cortex-a8", "A")
-        .Cases("cortex-a9", "cortex-a12", "cortex-a15", "cortex-a17", "krait",
-               "A")
-        .Cases("cortex-a53", "cortex-a57", "cortex-a72", "A")
-        .Cases("cortex-m3", "cortex-m4", "cortex-m0", "cortex-m0plus", "M")
-        .Cases("cortex-m1", "cortex-m7", "sc000", "sc300", "M")
-        .Cases("cortex-r4",  "cortex-r4f", "cortex-r5", "cortex-r7", "R")
-        .Default("");
+    unsigned CPUArch = llvm::ARMTargetParser::parseCPUArch(Name);
+    if (CPUArch == llvm::ARM::AK_INVALID)
+      return "";
+
+    StringRef ArchName = llvm::ARMTargetParser::getArchName(CPUArch);
+    switch(llvm::ARMTargetParser::parseArchProfile(ArchName)) {
+      case llvm::ARM::PK_A:
+        return "A";
+      case llvm::ARM::PK_R:
+        return "R";
+      case llvm::ARM::PK_M:
+        return "M";
+      default:
+        return "";
+    }
   }
   bool setCPU(const std::string &Name) override {
     if (!getCPUDefineSuffix(Name))