diff options
author | Daniel Jasper <djasper@google.com> | 2017-10-12 13:25:05 +0000 |
---|---|---|
committer | Daniel Jasper <djasper@google.com> | 2017-10-12 13:25:05 +0000 |
commit | 4d93120273868a395624433d00522ea31cc11de3 (patch) | |
tree | 3cb4ed412c3a0c684b6c82ac21a066c4d0070c81 | |
parent | f5f204679b576691bc0b14d73f2afd7e142ae5c6 (diff) | |
download | bcm5719-llvm-4d93120273868a395624433d00522ea31cc11de3.tar.gz bcm5719-llvm-4d93120273868a395624433d00522ea31cc11de3.zip |
Reinstantiate old/bad deduplication logic that was removed in r315279.
While this shouldn't be necessary anymore, we have cases where we run
into the assertion below, i.e. cases with two non-fragment entries for the
same variable at different frame indices.
This should be fixed, but for now, we should revert to a version that
does not trigger asserts.
llvm-svn: 315576
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 4844d68172b..048a284ade5 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -233,6 +233,16 @@ void DbgVariable::addMMIEntry(const DbgVariable &V) { assert(!FrameIndexExprs.empty() && "Expected an MMI entry"); assert(!V.FrameIndexExprs.empty() && "Expected an MMI entry"); + // FIXME: This logic should not be necessary anymore, as we now have proper + // deduplication. However, without it, we currently run into the assertion + // below, which means that we are likely dealing with broken input, i.e. two + // non-fragment entries for the same variable at different frame indices. + if (FrameIndexExprs.size()) { + auto *Expr = FrameIndexExprs.back().Expr; + if (!Expr || !Expr->isFragment()) + return; + } + for (const auto &FIE : V.FrameIndexExprs) // Ignore duplicate entries. if (llvm::none_of(FrameIndexExprs, [&](const FrameIndexExpr &Other) { |