summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2017-06-12 22:41:06 +0000
committerAdrian Prantl <aprantl@apple.com>2017-06-12 22:41:06 +0000
commitf45e6462caf338ad0b5e367cd2bb9f239d53bdca (patch)
treeb4090019bae2b912d1e4807ac76919038d83e62b /llvm/lib/CodeGen
parent2ad88f81f025ca5a2f4fc7fe6ee8b7c039e29a8d (diff)
downloadbcm5719-llvm-f45e6462caf338ad0b5e367cd2bb9f239d53bdca.tar.gz
bcm5719-llvm-f45e6462caf338ad0b5e367cd2bb9f239d53bdca.zip
Fix an assertion failure when duplicate dbg.declares are present.
This fixes PR33157. https://bugs.llvm.org//show_bug.cgi?id=33157 We might also think about disallowing duplicate dbg.declare intrinsics entirely, but this may complicate some passes needlessly. llvm-svn: 305244
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
index ebfba4cfc27..5dfe06c64ec 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
@@ -134,6 +134,13 @@ public:
assert(!FrameIndexExprs.empty() && "Expected an MMI entry");
assert(!V.FrameIndexExprs.empty() && "Expected an MMI entry");
+ if (FrameIndexExprs.size()) {
+ auto *Expr = FrameIndexExprs.back().Expr;
+ // Get rid of duplicate non-fragment entries. More than one non-fragment
+ // dbg.declare makes no sense so ignore all but the first.
+ if (!Expr || !Expr->isFragment())
+ return;
+ }
FrameIndexExprs.append(V.FrameIndexExprs.begin(), V.FrameIndexExprs.end());
assert(all_of(FrameIndexExprs,
[](FrameIndexExpr &FIE) {
OpenPOWER on IntegriCloud