diff options
author | Keno Fischer <kfischer@college.harvard.edu> | 2016-01-16 01:15:32 +0000 |
---|---|---|
committer | Keno Fischer <kfischer@college.harvard.edu> | 2016-01-16 01:15:32 +0000 |
commit | bc0cb11eb206b2441611016d0e57f4fe80af8544 (patch) | |
tree | e08008fc600b865b57aa9912e2feb646babf9cf5 /llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | |
parent | d73cd4ab01b510f88b03f90882bb07a78eb16627 (diff) | |
download | bcm5719-llvm-bc0cb11eb206b2441611016d0e57f4fe80af8544.tar.gz bcm5719-llvm-bc0cb11eb206b2441611016d0e57f4fe80af8544.zip |
[DwarfDebug] Don't merge DebugLocEntries if their pieces overlap
Summary:
Later in DWARF emission we check that DebugLocEntries have
non-overlapping pieces, so we should create any such entries
by merging here.
Fixes PR26163.
Reviewers: aprantl
Differential Revision: http://reviews.llvm.org/D16249
llvm-svn: 257979
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 6a1596232be..ae62b6b19a4 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -813,7 +813,8 @@ bool DebugLocEntry::MergeValues(const DebugLocEntry &Next) { if (Begin == Next.Begin) { auto *Expr = cast_or_null<DIExpression>(Values[0].Expression); auto *NextExpr = cast_or_null<DIExpression>(Next.Values[0].Expression); - if (Expr->isBitPiece() && NextExpr->isBitPiece()) { + if (Expr->isBitPiece() && NextExpr->isBitPiece() && + !piecesOverlap(Expr, NextExpr)) { addValues(Next.Values); End = Next.End; return true; |