mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-02 10:32:56 +00:00
[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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299815 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0b9a8d8fd2
commit
b28be420c0
@ -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 ':'
|
||||
|
||||
|
7
test/MC/AsmParser/macro-duplicate-params-names-err.s
Normal file
7
test/MC/AsmParser/macro-duplicate-params-names-err.s
Normal file
@ -0,0 +1,7 @@
|
||||
// RUN: not llvm-mc %s 2> %t
|
||||
// RUN: FileCheck < %t %s
|
||||
|
||||
.macro M a a
|
||||
.endm
|
||||
|
||||
// CHECK: macro 'M' has multiple parameters named 'a'
|
Loading…
x
Reference in New Issue
Block a user