Introduce CPUStringIsValid() into MCSubtargetInfo and use it for ARM .cpu parsing.
[oota-llvm.git] / lib / Target / ARM / AsmParser / ARMAsmParser.cpp
index 5e91a199527b9be14a08822f1b9606f979e83dee..6e7a27ae03e6c366824fcd3531a4380d28701ac8 100644 (file)
@@ -9083,6 +9083,17 @@ bool ARMAsmParser::parseDirectiveEabiAttr(SMLoc L) {
 bool ARMAsmParser::parseDirectiveCPU(SMLoc L) {
   StringRef CPU = getParser().parseStringToEndOfStatement().trim();
   getTargetStreamer().emitTextAttribute(ARMBuildAttrs::CPU_name, CPU);
+
+  if (!STI.CPUStringIsValid(CPU)) {
+    Error(L, "Unknown CPU name");
+    return false;
+  }
+
+  STI.InitMCProcessorInfo(CPU, "");
+  STI.InitCPUSchedModel(CPU);
+  unsigned FB = ComputeAvailableFeatures(STI.getFeatureBits());
+  setAvailableFeatures(FB);
+
   return false;
 }