summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2014-05-21 17:53:18 +0000
committerSaleem Abdulrasool <compnerd@compnerd.org>2014-05-21 17:53:18 +0000
commit5dd4b9f43b4457ea481b1b649777badb79c575d5 (patch)
treefc6233951b8cd3da4ef60ca778b11faf8e6fe58c
parent03b003b1cb2f0ab2b6bd05b879c2624522b18672 (diff)
downloadllvm-5dd4b9f43b4457ea481b1b649777badb79c575d5.tar.gz
llvm-5dd4b9f43b4457ea481b1b649777badb79c575d5.tar.bz2
llvm-5dd4b9f43b4457ea481b1b649777badb79c575d5.tar.xz
MC: loosen an overzealous assertion
Permit active macro expansions when terminating the assembler if there were errors during the expansion. This would only trigger on invalid input when built with assertions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209309 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/MC/MCParser/AsmParser.cpp3
-rw-r--r--test/MC/AsmParser/invalid-input-assertion.s10
2 files changed, 12 insertions, 1 deletions
diff --git a/lib/MC/MCParser/AsmParser.cpp b/lib/MC/MCParser/AsmParser.cpp
index 633d101248..ec2094d671 100644
--- a/lib/MC/MCParser/AsmParser.cpp
+++ b/lib/MC/MCParser/AsmParser.cpp
@@ -528,7 +528,8 @@ AsmParser::AsmParser(SourceMgr &_SM, MCContext &_Ctx, MCStreamer &_Out,
}
AsmParser::~AsmParser() {
- assert(ActiveMacros.empty() && "Unexpected active macro instantiation!");
+ assert((HadError || ActiveMacros.empty()) &&
+ "Unexpected active macro instantiation!");
// Destroy any macros.
for (StringMap<MCAsmMacro *>::iterator it = MacroMap.begin(),
diff --git a/test/MC/AsmParser/invalid-input-assertion.s b/test/MC/AsmParser/invalid-input-assertion.s
new file mode 100644
index 0000000000..68846fe6a8
--- /dev/null
+++ b/test/MC/AsmParser/invalid-input-assertion.s
@@ -0,0 +1,10 @@
+// RUN: not llvm-mc -triple i686-linux -o /dev/null %s
+// REQUIRES: asserts
+
+ .macro macro parameter=0
+ .if \parameter
+ .else
+ .endm
+
+ macro 1
+