Add a testcase for DIExpression(DW_OP_stack_value)
and relax the assertion that prohibited its emission.
This fixes the assertion failure uncovered by r301093.
llvm-svn: 301209
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 58416a0..8bce12a 100644
--- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -856,6 +856,8 @@
uint64_t ExtraOffset = Expr->getElement(i++);
if (Op == dwarf::DW_OP_plus)
Offset += ExtraOffset;
+ else if (Op == dwarf::DW_OP_stack_value)
+ OS << " [stack value]";
else {
assert(Op == dwarf::DW_OP_minus);
Offset -= ExtraOffset;
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
index f65dc15..51ae178 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
@@ -343,7 +343,6 @@
emitUnsigned(Op->getArg(0));
break;
case dwarf::DW_OP_stack_value:
- assert(LocationKind == Unknown || LocationKind == Implicit);
LocationKind = Implicit;
break;
case dwarf::DW_OP_swap: