From 95b4fcd37748785dc2ce8d06b1f728320d60eb69 Mon Sep 17 00:00:00 2001 From: Nikolay Haustov Date: Tue, 1 Mar 2016 08:18:28 +0000 Subject: [PATCH] AsmParser: Fix nested .irp/.irpc Count .irp/.irpc in parseMacroLikeBody similar to .rept Update tests. Review: http://reviews.llvm.org/D17707 llvm-svn: 262313 --- llvm/lib/MC/MCParser/AsmParser.cpp | 4 +++- llvm/test/MC/AsmParser/macro-irp.s | 13 +++++++++++++ llvm/test/MC/AsmParser/macro-irpc.s | 13 +++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp index cd64de6..0f125d6 100644 --- a/llvm/lib/MC/MCParser/AsmParser.cpp +++ b/llvm/lib/MC/MCParser/AsmParser.cpp @@ -4707,7 +4707,9 @@ MCAsmMacro *AsmParser::parseMacroLikeBody(SMLoc DirectiveLoc) { } if (Lexer.is(AsmToken::Identifier) && - (getTok().getIdentifier() == ".rept")) { + (getTok().getIdentifier() == ".rept" || + getTok().getIdentifier() == ".irp" || + getTok().getIdentifier() == ".irpc")) { ++NestLevel; } diff --git a/llvm/test/MC/AsmParser/macro-irp.s b/llvm/test/MC/AsmParser/macro-irp.s index 2f26eab..42902bc 100644 --- a/llvm/test/MC/AsmParser/macro-irp.s +++ b/llvm/test/MC/AsmParser/macro-irp.s @@ -6,3 +6,16 @@ // CHECK: pushl %eax // CHECK: pushl %ebx + +.irp reg,%eax,%ebx +.irp imm,4,3,5 + addl \reg, \imm +.endr +.endr + +// CHECK: addl %eax, 4 +// CHECK: addl %eax, 3 +// CHECK: addl %eax, 5 +// CHECK: addl %ebx, 4 +// CHECK: addl %ebx, 3 +// CHECK: addl %ebx, 5 diff --git a/llvm/test/MC/AsmParser/macro-irpc.s b/llvm/test/MC/AsmParser/macro-irpc.s index ea5efbf..d39399b 100644 --- a/llvm/test/MC/AsmParser/macro-irpc.s +++ b/llvm/test/MC/AsmParser/macro-irpc.s @@ -7,3 +7,16 @@ // CHECK: long 1 // CHECK: long 2 // CHECK: long 3 + +.irpc foo,123 +.irpc bar,45 + addl %eax, \foo\bar +.endr +.endr + +// CHECK: addl %eax, 14 +// CHECK: addl %eax, 15 +// CHECK: addl %eax, 24 +// CHECK: addl %eax, 25 +// CHECK: addl %eax, 34 +// CHECK: addl %eax, 35 -- 2.7.4