[llvm] r185588 - Make DotDebugLocEntry a class, reorder the members along with comments
David Blaikie
dblaikie at gmail.com
Thu Jul 4 10:41:35 PDT 2013
On Wed, Jul 3, 2013 at 3:40 PM, Eric Christopher <echristo at gmail.com> wrote:
> Author: echristo
> Date: Wed Jul 3 17:40:18 2013
> New Revision: 185588
>
> URL: http://llvm.org/viewvc/llvm-project?rev=185588&view=rev
> Log:
> Make DotDebugLocEntry a class, reorder the members along with comments
> for them and update all uses.
Not fussed much either way - but any particular reason for this? It
seems the members are simple enough (could be 'const' even, if
mutation is your concern) that they wrapping them in accessors doesn't
add much.
Though the
typedef struct DotDebugLocEntry {
...
} DotDebugLocEnttry;
was particularly retro...
(& to clarify - the commit description of 'made some members of
DotDebugLocEntry private' might've made more sense to me - since it
already had a ctor & stuff, it wasn't like DotDebugLocEntry was just a
typedef for a tuple or something (but, sure, it was a 'struct'
previously - it just wasn't clear from the commit comment, the access
of the members was what changed rather than anything else, if that
makes sense))
>
> Modified:
> llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
> llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=185588&r1=185587&r2=185588&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Wed Jul 3 17:40:18 2013
> @@ -2440,9 +2440,9 @@ void DwarfDebug::emitDebugLoc() {
> Asm->OutStreamer.EmitIntValue(0, Size);
> Asm->OutStreamer.EmitLabel(Asm->GetTempSymbol("debug_loc", index));
> } else {
> - Asm->OutStreamer.EmitSymbolValue(Entry.Begin, Size);
> - Asm->OutStreamer.EmitSymbolValue(Entry.End, Size);
> - DIVariable DV(Entry.Variable);
> + Asm->OutStreamer.EmitSymbolValue(Entry.getBeginSym(), Size);
> + Asm->OutStreamer.EmitSymbolValue(Entry.getEndSym(), Size);
> + DIVariable DV(Entry.getVariable());
> Asm->OutStreamer.AddComment("Loc expr size");
> MCSymbol *begin = Asm->OutStreamer.getContext().CreateTempSymbol();
> MCSymbol *end = Asm->OutStreamer.getContext().CreateTempSymbol();
> @@ -2464,15 +2464,15 @@ void DwarfDebug::emitDebugLoc() {
> } else if (Entry.isLocation()) {
> if (!DV.hasComplexAddress())
> // Regular entry.
> - Asm->EmitDwarfRegOp(Entry.Loc, DV.isIndirect());
> + Asm->EmitDwarfRegOp(Entry.getLoc(), DV.isIndirect());
> else {
> // Complex address entry.
> unsigned N = DV.getNumAddrElements();
> unsigned i = 0;
> if (N >= 2 && DV.getAddrElement(0) == DIBuilder::OpPlus) {
> - if (Entry.Loc.getOffset()) {
> + if (Entry.getLoc().getOffset()) {
> i = 2;
> - Asm->EmitDwarfRegOp(Entry.Loc, DV.isIndirect());
> + Asm->EmitDwarfRegOp(Entry.getLoc(), DV.isIndirect());
> Asm->OutStreamer.AddComment("DW_OP_deref");
> Asm->EmitInt8(dwarf::DW_OP_deref);
> Asm->OutStreamer.AddComment("DW_OP_plus_uconst");
> @@ -2481,12 +2481,12 @@ void DwarfDebug::emitDebugLoc() {
> } else {
> // If first address element is OpPlus then emit
> // DW_OP_breg + Offset instead of DW_OP_reg + Offset.
> - MachineLocation Loc(Entry.Loc.getReg(), DV.getAddrElement(1));
> + MachineLocation Loc(Entry.getLoc().getReg(), DV.getAddrElement(1));
> Asm->EmitDwarfRegOp(Loc, DV.isIndirect());
> i = 2;
> }
> } else {
> - Asm->EmitDwarfRegOp(Entry.Loc, DV.isIndirect());
> + Asm->EmitDwarfRegOp(Entry.getLoc(), DV.isIndirect());
> }
>
> // Emit remaining complex address elements.
> @@ -2496,7 +2496,7 @@ void DwarfDebug::emitDebugLoc() {
> Asm->EmitInt8(dwarf::DW_OP_plus_uconst);
> Asm->EmitULEB128(DV.getAddrElement(++i));
> } else if (Element == DIBuilder::OpDeref) {
> - if (!Entry.Loc.isReg())
> + if (!Entry.getLoc().isReg())
> Asm->EmitInt8(dwarf::DW_OP_deref);
> } else
> llvm_unreachable("unknown Opcode found in complex address");
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h?rev=185588&r1=185587&r2=185588&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h Wed Jul 3 17:40:18 2013
> @@ -62,12 +62,12 @@ public:
>
> /// \brief This struct describes location entries emitted in the .debug_loc
> /// section.
> -typedef struct DotDebugLocEntry {
> +class DotDebugLocEntry {
> + // Begin and end symbols for the address range that this location is valid.
> const MCSymbol *Begin;
> const MCSymbol *End;
> - MachineLocation Loc;
> - const MDNode *Variable;
> - bool Merged;
> +
> + // Type of entry that this represents.
> enum EntryType {
> E_Location,
> E_Integer,
> @@ -81,6 +81,17 @@ typedef struct DotDebugLocEntry {
> const ConstantFP *CFP;
> const ConstantInt *CIP;
> } Constants;
> +
> + // The location in the machine frame.
> + MachineLocation Loc;
> +
> + // The variable to which this location entry corresponds.
> + const MDNode *Variable;
> +
> + // Whether this location has been merged.
> + bool Merged;
> +
> +public:
> DotDebugLocEntry() : Begin(0), End(0), Variable(0), Merged(false) {
> Constants.Int = 0;
> }
> @@ -124,7 +135,11 @@ typedef struct DotDebugLocEntry {
> int64_t getInt() const { return Constants.Int; }
> const ConstantFP *getConstantFP() const { return Constants.CFP; }
> const ConstantInt *getConstantInt() const { return Constants.CIP; }
> -} DotDebugLocEntry;
> + const MDNode *getVariable() const { return Variable; }
> + const MCSymbol *getBeginSym() const { return Begin; }
> + const MCSymbol *getEndSym() const { return End; }
> + MachineLocation getLoc() const { return Loc; }
> +};
>
> //===----------------------------------------------------------------------===//
> /// \brief This class is used to track local variable information.
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list