summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2014-08-11 23:22:59 +0000
committerAdrian Prantl <aprantl@apple.com>2014-08-11 23:22:59 +0000
commit76502d84179e52d6ab1c657b4baf0e92ee27f912 (patch)
treeb8be1fefa103b14eda9b6c212a0a255ae87acb49 /llvm/lib
parent5f79ee53ec9797294205f191799e1bb6a9ef4633 (diff)
downloadbcm5719-llvm-76502d84179e52d6ab1c657b4baf0e92ee27f912.tar.gz
bcm5719-llvm-76502d84179e52d6ab1c657b4baf0e92ee27f912.zip
Add a couple of convenience accessors to DebugLocEntry::Value to further
simplify common usage patterns. llvm-svn: 215407
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h10
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp15
2 files changed, 12 insertions, 13 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h b/llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h
index c60a958c073..a4e37e13841 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h
+++ b/llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h
@@ -67,7 +67,9 @@ public:
const ConstantFP *getConstantFP() const { return Constant.CFP; }
const ConstantInt *getConstantInt() const { return Constant.CIP; }
MachineLocation getLoc() const { return Loc; }
- const MDNode *getVariable() const { return Variable; }
+ const MDNode *getVariableNode() const { return Variable; }
+ DIVariable getVariable() const { return DIVariable(Variable); }
+ bool isVariablePiece() const { return getVariable().isVariablePiece(); }
friend bool operator==(const Value &, const Value &);
friend bool operator<(const Value &, const Value &);
};
@@ -121,7 +123,7 @@ public:
Values.append(Vals.begin(), Vals.end());
sortUniqueValues();
assert(std::all_of(Values.begin(), Values.end(), [](DebugLocEntry::Value V){
- return DIVariable(V.Variable).isVariablePiece();
+ return V.isVariablePiece();
}) && "value must be a piece");
}
@@ -158,9 +160,7 @@ inline bool operator==(const DebugLocEntry::Value &A,
/// Compare two pieces based on their offset.
inline bool operator<(const DebugLocEntry::Value &A,
const DebugLocEntry::Value &B) {
- DIVariable Var(A.getVariable());
- DIVariable OtherVar(B.getVariable());
- return Var.getPieceOffset() < OtherVar.getPieceOffset();
+ return A.getVariable().getPieceOffset() < B.getVariable().getPieceOffset();
}
}
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index a669077f08b..5fd27e10eaa 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -1251,9 +1251,9 @@ DwarfDebug::buildLocationList(SmallVectorImpl<DebugLocEntry> &DebugLoc,
// If this piece overlaps with any open ranges, truncate them.
DIVariable DIVar = Begin->getDebugVariable();
auto Last = std::remove_if(OpenRanges.begin(), OpenRanges.end(),
- [&](DebugLocEntry::Value R) {
- return piecesOverlap(DIVar, DIVariable(R.getVariable()));
- });
+ [&](DebugLocEntry::Value R) {
+ return piecesOverlap(DIVar, R.getVariable());
+ });
OpenRanges.erase(Last, OpenRanges.end());
const MCSymbol *StartLabel = getLabelBeforeInsn(Begin);
@@ -2067,14 +2067,14 @@ void DwarfDebug::emitLocPieces(ByteStreamer &Streamer,
const DITypeIdentifierMap &Map,
ArrayRef<DebugLocEntry::Value> Values) {
assert(std::all_of(Values.begin(), Values.end(), [](DebugLocEntry::Value P) {
- return DIVariable(P.getVariable()).isVariablePiece();
+ return P.isVariablePiece();
}) && "all values are expected to be pieces");
assert(std::is_sorted(Values.begin(), Values.end()) &&
"pieces are expected to be sorted");
unsigned Offset = 0;
for (auto Piece : Values) {
- DIVariable Var(Piece.getVariable());
+ DIVariable Var = Piece.getVariable();
unsigned PieceOffset = Var.getPieceOffset();
unsigned PieceSize = Var.getPieceSize();
assert(Offset <= PieceOffset && "overlapping or duplicate pieces");
@@ -2110,8 +2110,7 @@ void DwarfDebug::emitLocPieces(ByteStreamer &Streamer,
void DwarfDebug::emitDebugLocEntry(ByteStreamer &Streamer,
const DebugLocEntry &Entry) {
const DebugLocEntry::Value Value = Entry.getValues()[0];
- DIVariable DV(Value.getVariable());
- if (DV.isVariablePiece())
+ if (Value.isVariablePiece())
// Emit all pieces that belong to the same variable and range.
return emitLocPieces(Streamer, TypeIdentifierMap, Entry.getValues());
@@ -2121,7 +2120,7 @@ void DwarfDebug::emitDebugLocEntry(ByteStreamer &Streamer,
void DwarfDebug::emitDebugLocValue(ByteStreamer &Streamer,
const DebugLocEntry::Value &Value) {
- DIVariable DV(Value.getVariable());
+ DIVariable DV = Value.getVariable();
// Regular entry.
if (Value.isInt()) {
DIBasicType BTy(resolve(DV.getType()));
OpenPOWER on IntegriCloud