From d215976208312f179213c6b9b830cf52331f5fcf Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Tue, 10 Aug 2010 17:38:52 +0000 Subject: MC/AsmParser: Fix a bug in macro argument parsing, which was dropping parentheses from argument lists. llvm-svn: 110692 --- llvm/lib/MC/MCParser/AsmParser.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'llvm/lib/MC/MCParser/AsmParser.cpp') diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp index f4de09a1c0a..70a37e3009b 100644 --- a/llvm/lib/MC/MCParser/AsmParser.cpp +++ b/llvm/lib/MC/MCParser/AsmParser.cpp @@ -1032,12 +1032,14 @@ bool AsmParser::HandleMacroEntry(StringRef Name, SMLoc NameLoc, // list. if (ParenLevel == 0 && Lexer.is(AsmToken::Comma)) { MacroArguments.push_back(std::vector()); - } else if (Lexer.is(AsmToken::LParen)) { - ++ParenLevel; - } else if (Lexer.is(AsmToken::RParen)) { - if (ParenLevel) - --ParenLevel; } else { + // Adjust the current parentheses level. + if (Lexer.is(AsmToken::LParen)) + ++ParenLevel; + else if (Lexer.is(AsmToken::RParen) && ParenLevel) + --ParenLevel; + + // Append the token to the current argument list. MacroArguments.back().push_back(getTok()); } Lex(); -- cgit v1.2.3