Index: llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp =================================================================== --- llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp +++ llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp @@ -10505,7 +10505,7 @@ MCAsmParser &Parser = getParser(); if (getLexer().isNot(AsmToken::Identifier)) { - Error(getLexer().getLoc(), "unexpected token"); + Error(getLexer().getLoc(), "expected architecture extension name"); Parser.eatToEndOfStatement(); return false; } @@ -10520,15 +10520,19 @@ Name = Name.substr(2); } unsigned FeatureKind = ARM::parseArchExt(Name); - if (FeatureKind == ARM::AEK_INVALID) + if (FeatureKind == ARM::AEK_INVALID) { Error(ExtLoc, "unknown architectural extension: " + Name); + return false; + } for (const auto &Extension : Extensions) { if (Extension.Kind != FeatureKind) continue; - if (Extension.Features.none()) - report_fatal_error("unsupported architectural extension: " + Name); + if (Extension.Features.none()) { + Error(ExtLoc, "unsupported architectural extension: " + Name); + return false; + } if ((getAvailableFeatures() & Extension.ArchCheck) != Extension.ArchCheck) { Error(ExtLoc, "architectural extension '" + Name + "' is not " Index: llvm/trunk/test/MC/ARM/directive-arch_extension-unsupported.s =================================================================== --- llvm/trunk/test/MC/ARM/directive-arch_extension-unsupported.s +++ llvm/trunk/test/MC/ARM/directive-arch_extension-unsupported.s @@ -0,0 +1,25 @@ +@ RUN: not llvm-mc -triple armv7--none-eabi -filetype asm -o /dev/null 2>&1 %s | FileCheck %s + + .arch_extension os +CHECK: error: unsupported architectural extension: os + + .arch_extension iwmmxt +CHECK: error: unsupported architectural extension: iwmmxt + + .arch_extension iwmmxt2 +CHECK: error: unsupported architectural extension: iwmmxt2 + + .arch_extension maverick +CHECK: error: unsupported architectural extension: maverick + + .arch_extension xscale +CHECK: error: unsupported architectural extension: xscale + + .arch_extension invalid_extension_name +CHECK: error: unknown architectural extension: invalid_extension_name + + .arch_extension 42 +CHECK: error: expected architecture extension name + + .arch_extension +CHECK: error: expected architecture extension name