diff options
| author | Nikolay Haustov <Nikolay.Haustov@amd.com> | 2016-03-01 08:18:28 +0000 |
|---|---|---|
| committer | Nikolay Haustov <Nikolay.Haustov@amd.com> | 2016-03-01 08:18:28 +0000 |
| commit | 95b4fcd37748785dc2ce8d06b1f728320d60eb69 (patch) | |
| tree | 76b3adc3e8dd392cd735c89442cd96d891f9aaf3 | |
| parent | 073e947f1b5deb4c9dc59c514febab364b434744 (diff) | |
| download | bcm5719-llvm-95b4fcd37748785dc2ce8d06b1f728320d60eb69.tar.gz bcm5719-llvm-95b4fcd37748785dc2ce8d06b1f728320d60eb69.zip | |
AsmParser: Fix nested .irp/.irpc
Count .irp/.irpc in parseMacroLikeBody similar to .rept
Update tests.
Review: http://reviews.llvm.org/D17707
llvm-svn: 262313
| -rw-r--r-- | llvm/lib/MC/MCParser/AsmParser.cpp | 4 | ||||
| -rw-r--r-- | llvm/test/MC/AsmParser/macro-irp.s | 13 | ||||
| -rw-r--r-- | llvm/test/MC/AsmParser/macro-irpc.s | 13 |
3 files changed, 29 insertions, 1 deletions
diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp index cd64de6002a..0f125d6b059 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 2f26eabae53..42902bc94b5 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 ea5efbfb245..d39399b131f 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 |

