From: Adrian Prantl Date: Mon, 11 Aug 2014 23:22:59 +0000 (+0000) Subject: Add a couple of convenience accessors to DebugLocEntry::Value to further X-Git-Tag: v01.01.07.01~5156 X-Git-Url: https://git.ti.com/gitweb?p=opencl%2Fllvm.git;a=commitdiff_plain;h=79fb67b835ccc4b401d316025abc2555efedf8cc;hp=61b3abb685ec4371a57ca06dff6a809d0c1152a5 Add a couple of convenience accessors to DebugLocEntry::Value to further simplify common usage patterns. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215407 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/AsmPrinter/DebugLocEntry.h b/lib/CodeGen/AsmPrinter/DebugLocEntry.h index c60a958c07..a4e37e1384 100644 --- a/lib/CodeGen/AsmPrinter/DebugLocEntry.h +++ b/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/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index a669077f08..5fd27e10ea 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -1251,9 +1251,9 @@ DwarfDebug::buildLocationList(SmallVectorImpl &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 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()));