mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 04:33:05 +00:00
Debug info: Modify DebugLocEntry::addValue to take multiple values so it
only has to sort/unique values once per batch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215386 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
59b604983e
commit
db72188598
@ -114,8 +114,7 @@ public:
|
||||
DIVariable NextVar(Next.Values[0].Variable);
|
||||
if (Var.getName() == NextVar.getName() &&
|
||||
Var.isVariablePiece() && NextVar.isVariablePiece()) {
|
||||
Values.append(Next.Values.begin(), Next.Values.end());
|
||||
sortUniqueValues();
|
||||
addValues(Next.Values);
|
||||
End = Next.End;
|
||||
return true;
|
||||
}
|
||||
@ -139,11 +138,12 @@ public:
|
||||
const MCSymbol *getBeginSym() const { return Begin; }
|
||||
const MCSymbol *getEndSym() const { return End; }
|
||||
const ArrayRef<Value> getValues() const { return Values; }
|
||||
void addValue(Value Val) {
|
||||
assert(DIVariable(Val.Variable).isVariablePiece() &&
|
||||
"multi-value DebugLocEntries must be pieces");
|
||||
Values.push_back(Val);
|
||||
void addValues(ArrayRef<DebugLocEntry::Value> Vals) {
|
||||
Values.append(Vals.begin(), Vals.end());
|
||||
sortUniqueValues();
|
||||
assert(std::all_of(Values.begin(), Values.end(), [](DebugLocEntry::Value V){
|
||||
return DIVariable(V.Variable).isVariablePiece();
|
||||
}) && "value must be a piece");
|
||||
}
|
||||
|
||||
// Sort the pieces by offset.
|
||||
|
@ -1288,8 +1288,9 @@ DwarfDebug::buildLocationList(SmallVectorImpl<DebugLocEntry> &DebugLoc,
|
||||
if (!couldMerge) {
|
||||
// Need to add a new DebugLocEntry. Add all values from still
|
||||
// valid non-overlapping pieces.
|
||||
for (auto Range : OpenRanges)
|
||||
Loc.addValue(Range.second);
|
||||
if (OpenRanges.size())
|
||||
Loc.addValues(OpenRanges);
|
||||
|
||||
DebugLoc.push_back(std::move(Loc));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user