summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCParser/AsmParser.cpp
diff options
context:
space:
mode:
authorCoby Tayree <coby.tayree@intel.com>2017-04-08 20:29:03 +0000
committerCoby Tayree <coby.tayree@intel.com>2017-04-08 20:29:03 +0000
commitbedaae0d069f9c6d4b31d0745e2b51f657446380 (patch)
treee1e5ceca3ae720a1e17365c99ad121b878dd0796 /llvm/lib/MC/MCParser/AsmParser.cpp
parent151748b64d98c54d9af524c1d7aab6c8d37d982e (diff)
downloadbcm5719-llvm-bedaae0d069f9c6d4b31d0745e2b51f657446380.tar.gz
bcm5719-llvm-bedaae0d069f9c6d4b31d0745e2b51f657446380.zip
[AsmParser]Emit an error if a macro has two (or more) parameters sharing the same name
Introducing a new error to macro parameters' parsing: currently, llvm-mc won't complain if a macro have two (or more) named params with the same name. this behavior is false, as there's no merit in having some params sharing a name. now, instead of tolerate such a phenomena - emit an appropriate error. Differential Revision: https://reviews.llvm.org/D31674 llvm-svn: 299815
Diffstat (limited to 'llvm/lib/MC/MCParser/AsmParser.cpp')
-rw-r--r--llvm/lib/MC/MCParser/AsmParser.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp
index 9d5eaf31408..e65ce9f0b93 100644
--- a/llvm/lib/MC/MCParser/AsmParser.cpp
+++ b/llvm/lib/MC/MCParser/AsmParser.cpp
@@ -3874,6 +3874,12 @@ bool AsmParser::parseDirectiveMacro(SMLoc DirectiveLoc) {
if (parseIdentifier(Parameter.Name))
return TokError("expected identifier in '.macro' directive");
+ // Emit an error if two (or more) named parameters share the same name
+ for (const MCAsmMacroParameter& CurrParam : Parameters)
+ if (CurrParam.Name.equals(Parameter.Name))
+ return TokError("macro '" + Name + "' has multiple parameters"
+ " named '" + Parameter.Name + "'");
+
if (Lexer.is(AsmToken::Colon)) {
Lex(); // consume ':'
OpenPOWER on IntegriCloud