summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2014-08-11 21:06:00 +0000
committerAdrian Prantl <aprantl@apple.com>2014-08-11 21:06:00 +0000
commit1c6f2ec1121f581edf7fb54d75bb448cea15654a (patch)
tree2640062b93f41a55db71f4554c85e12850b1da8f /llvm/lib
parentcaaf053c79f1583f8034daa5ccc6ac3868af7f20 (diff)
downloadbcm5719-llvm-1c6f2ec1121f581edf7fb54d75bb448cea15654a.tar.gz
bcm5719-llvm-1c6f2ec1121f581edf7fb54d75bb448cea15654a.zip
Debug info: Modify DebugLocEntry::addValue to take multiple values so it
only has to sort/unique values once per batch. llvm-svn: 215386
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h12
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp5
2 files changed, 9 insertions, 8 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h b/llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h
index 41735fca376..ba05aa71157 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h
+++ b/llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h
@@ -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.
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index 57dda88b002..a669077f08b 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -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));
}
OpenPOWER on IntegriCloud