diff options
-rw-r--r-- | lib/MC/MCParser/AsmParser.cpp | 3 | ||||
-rw-r--r-- | test/MC/AsmParser/invalid-input-assertion.s | 10 |
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 + |