[PATCH] D59303: [DebugInfo] Pass all values in DebugLocEntry's constructor, NFC
David Stenberg via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 9 03:06:45 PDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rL357988: [DebugInfo] Pass all values in DebugLocEntry's constructor, NFC (authored by dstenb, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D59303?vs=194279&id=194282#toc
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D59303/new/
https://reviews.llvm.org/D59303
Files:
llvm/trunk/lib/CodeGen/AsmPrinter/DebugLocEntry.h
llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
Index: llvm/trunk/lib/CodeGen/AsmPrinter/DebugLocEntry.h
===================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DebugLocEntry.h
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DebugLocEntry.h
@@ -100,9 +100,13 @@
SmallVector<Value, 1> Values;
public:
- DebugLocEntry(const MCSymbol *B, const MCSymbol *E, Value Val)
- : Begin(B), End(E) {
- Values.push_back(std::move(Val));
+ /// Create a location list entry for the range [\p Begin, \p End).
+ ///
+ /// \param Vals One or more values describing (parts of) the variable.
+ DebugLocEntry(const MCSymbol *Begin, const MCSymbol *End,
+ ArrayRef<Value> Vals)
+ : Begin(Begin), End(End) {
+ addValues(Vals);
}
/// Attempt to merge this DebugLocEntry with Next and return
@@ -124,9 +128,10 @@
void addValues(ArrayRef<DebugLocEntry::Value> Vals) {
Values.append(Vals.begin(), Vals.end());
sortUniqueValues();
- assert(all_of(Values, [](DebugLocEntry::Value V) {
- return V.isFragment();
- }) && "value must be a piece");
+ assert((Values.size() == 1 ||
+ all_of(Values,
+ [](DebugLocEntry::Value V) { return V.isFragment(); })) &&
+ "must either have a single value or multiple pieces");
}
// Sort the pieces by offset.
Index: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
===================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -1134,7 +1134,7 @@
continue;
}
- // If this fragment overlaps with any open ranges, truncate them.
+ // If this debug value overlaps with any open ranges, truncate them.
const DIExpression *DIExpr = Begin->getDebugExpression();
auto Last = remove_if(OpenRanges, [&](DebugLocEntry::Value R) {
return DIExpr->fragmentsOverlap(R.getExpression());
@@ -1156,30 +1156,15 @@
LLVM_DEBUG(dbgs() << "DotDebugLoc: " << *Begin << "\n");
auto Value = getDebugLocValue(Begin);
+ OpenRanges.push_back(Value);
// Omit entries with empty ranges as they do not have any effect in DWARF.
if (StartLabel == EndLabel) {
- // If this is a fragment, we must still add the value to the list of
- // open ranges, since it may describe non-overlapping parts of the
- // variable.
- if (DIExpr->isFragment())
- OpenRanges.push_back(Value);
LLVM_DEBUG(dbgs() << "Omitting location list entry with empty range.\n");
continue;
}
- DebugLocEntry Loc(StartLabel, EndLabel, Value);
-
- if (DIExpr->isFragment()) {
- // Add this value to the list of open ranges.
- OpenRanges.push_back(Value);
- }
-
- // Add all values from still valid non-overlapping fragments.
- if (OpenRanges.size())
- Loc.addValues(OpenRanges);
-
- DebugLoc.push_back(std::move(Loc));
+ DebugLoc.emplace_back(StartLabel, EndLabel, OpenRanges);
// Attempt to coalesce the ranges of two otherwise identical
// DebugLocEntries.
@@ -1962,6 +1947,8 @@
DebugLocStream::ListBuilder &List,
const DIBasicType *BT,
DwarfCompileUnit &TheCU) {
+ assert(!Values.empty() &&
+ "location list entries without values are redundant");
assert(Begin != End && "unexpected location list entry with empty range");
DebugLocStream::EntryBuilder Entry(List, Begin, End);
BufferByteStreamer Streamer = Entry.getStreamer();
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D59303.194282.patch
Type: text/x-patch
Size: 3575 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190409/943a8760/attachment.bin>
More information about the llvm-commits
mailing list