summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikolay Haustov <Nikolay.Haustov@amd.com>2016-03-01 08:18:28 +0000
committerNikolay Haustov <Nikolay.Haustov@amd.com>2016-03-01 08:18:28 +0000
commit95b4fcd37748785dc2ce8d06b1f728320d60eb69 (patch)
tree76b3adc3e8dd392cd735c89442cd96d891f9aaf3
parent073e947f1b5deb4c9dc59c514febab364b434744 (diff)
downloadbcm5719-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.cpp4
-rw-r--r--llvm/test/MC/AsmParser/macro-irp.s13
-rw-r--r--llvm/test/MC/AsmParser/macro-irpc.s13
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
OpenPOWER on IntegriCloud