diff options
author | Oliver Stannard <oliver.stannard@arm.com> | 2016-07-26 14:24:43 +0000 |
---|---|---|
committer | Oliver Stannard <oliver.stannard@arm.com> | 2016-07-26 14:24:43 +0000 |
commit | 1c6e5914576acfcf6234359a1a2a239841e75f2f (patch) | |
tree | c445ed1500554cd0e1149c6d5cec845de520067d /llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp | |
parent | 2171828a49c7abaf959ae71d7fe65929c75970fb (diff) | |
download | llvm-1c6e5914576acfcf6234359a1a2a239841e75f2f.zip llvm-1c6e5914576acfcf6234359a1a2a239841e75f2f.tar.gz llvm-1c6e5914576acfcf6234359a1a2a239841e75f2f.tar.bz2 |
[ARM] Improve error messages for .arch_extension directive
- More informative message when extension name is not an identifier token.
- Stop parsing directive if extension is unknown (avoid duplicate error
messages).
- Report unsupported extensions with a source location, rather than
report_fatal_error.
Differential Revision: https://reviews.llvm.org/D22806
llvm-svn: 276748
Diffstat (limited to 'llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp index 41379f0..9f7fb06 100644 --- a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp +++ b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp @@ -10505,7 +10505,7 @@ bool ARMAsmParser::parseDirectiveArchExtension(SMLoc L) { 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 @@ bool ARMAsmParser::parseDirectiveArchExtension(SMLoc L) { 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 " |