[llvm] r185588 - Make DotDebugLocEntry a class, reorder the members along with comments
Eric Christopher
echristo at gmail.com
Thu Jul 4 14:08:48 PDT 2013
>
> 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))
>
Yeah, making them private was merely a side effect, I figured since it
wasn't really just a class local struct that I should make it a class
with some encapsulation etc to follow the rest of llvm. Mostly I just
wanted to reorder the members to make some sort of sense.
And yeah, really retro typedef :)
-eric
>>
>> 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