[llvm] r225846 - Debug Info: Turn DIExpression::getFrameRegister() into an isFrameRegister()
Adrian Prantl
aprantl at apple.com
Wed Jan 14 09:35:51 PST 2015
> On Jan 14, 2015, at 9:21 AM, David Blaikie <dblaikie at gmail.com> wrote:
>
>
>
> On Wed, Jan 14, 2015 at 8:27 AM, Adrian Prantl <aprantl at apple.com <mailto:aprantl at apple.com>> wrote:
>
>> On Jan 13, 2015, at 7:08 PM, David Blaikie <dblaikie at gmail.com <mailto:dblaikie at gmail.com>> wrote:
>>
>>
>>
>> On Tue, Jan 13, 2015 at 3:10 PM, Adrian Prantl <aprantl at apple.com <mailto:aprantl at apple.com>> wrote:
>> Author: adrian
>> Date: Tue Jan 13 17:10:43 2015
>> New Revision: 225846
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=225846&view=rev <http://llvm.org/viewvc/llvm-project?rev=225846&view=rev>
>> Log:
>> Debug Info: Turn DIExpression::getFrameRegister() into an isFrameRegister()
>> function.
>>
>> NFC.
>>
>> Modified:
>> llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
>> llvm/trunk/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
>> llvm/trunk/lib/CodeGen/AsmPrinter/DwarfExpression.h
>> llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
>>
>> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp?rev=225846&r1=225845&r2=225846&view=diff <http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp?rev=225846&r1=225845&r2=225846&view=diff>
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp Tue Jan 13 17:10:43 2015
>> @@ -46,8 +46,9 @@ void DebugLocDwarfExpression::EmitUnsign
>> BS.EmitULEB128(Value, Twine(Value));
>> }
>>
>> -unsigned DebugLocDwarfExpression::getFrameRegister() {
>> - llvm_unreachable("not available");
>> +bool DebugLocDwarfExpression::isFrameRegister(unsigned MachineReg) {
>> + // This information is not available while emitting .debug_loc entries.
>>
>> Should it be? (should we keep track of it when building the DebugLocEntries in some way?)
>
> Generally yes, but it’s probably not a high priority. It would allow us to use the more idiomatic DW_OP_fbreg encoding. It would not actually save any space if the frame offset can be expressed as breg0-31.
>
> Ah, fair point. (one wonders about the utility of such an operation, then)
Found it: (DW_AT_frame_base may be a complex expression)
DW_OP_fbreg
The DW_OP_fbreg operation provides a signed LEB128 offset from the address specified by the location description in the DW_AT_frame_base attribute of the current function. (This is typically a “stack pointer” register plus or minus some offset. On more sophisticated systems it might be a location list that adjusts the offset according to changes in the stack pointer as the PC changes.)
-- adrian
>
>
> -- adrian
>
>>
>> + return false;
>> }
>>
>> //===----------------------------------------------------------------------===//
>>
>> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfExpression.cpp?rev=225846&r1=225845&r2=225846&view=diff <http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfExpression.cpp?rev=225846&r1=225845&r2=225846&view=diff>
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfExpression.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfExpression.cpp Tue Jan 13 17:10:43 2015
>> @@ -79,7 +79,7 @@ bool DwarfExpression::AddMachineRegIndir
>> if (DwarfReg < 0)
>> return false;
>>
>> - if (MachineReg == getFrameRegister()) {
>> + if (isFrameRegister(MachineReg)) {
>> // If variable offset is based in frame register then use fbreg.
>> EmitOp(dwarf::DW_OP_fbreg);
>> EmitSigned(Offset);
>>
>> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfExpression.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfExpression.h?rev=225846&r1=225845&r2=225846&view=diff <http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfExpression.h?rev=225846&r1=225845&r2=225846&view=diff>
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfExpression.h (original)
>> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfExpression.h Tue Jan 13 17:10:43 2015
>> @@ -40,7 +40,7 @@ public:
>> virtual void EmitSigned(int Value) = 0;
>> virtual void EmitUnsigned(unsigned Value) = 0;
>>
>> - virtual unsigned getFrameRegister() = 0;
>> + virtual bool isFrameRegister(unsigned MachineReg) = 0;
>>
>> /// Emit a dwarf register operation.
>> void AddReg(int DwarfReg, const char* Comment = nullptr);
>> @@ -92,7 +92,7 @@ public:
>> void EmitOp(uint8_t Op, const char *Comment) override;
>> void EmitSigned(int Value) override;
>> void EmitUnsigned(unsigned Value) override;
>> - unsigned getFrameRegister() override;
>> + bool isFrameRegister(unsigned MachineReg) override;
>> };
>>
>> }
>>
>> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp?rev=225846&r1=225845&r2=225846&view=diff <http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp?rev=225846&r1=225845&r2=225846&view=diff>
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp Tue Jan 13 17:10:43 2015
>> @@ -55,7 +55,7 @@ public:
>> void EmitOp(uint8_t Op, const char* Comment = nullptr) override;
>> void EmitSigned(int Value) override;
>> void EmitUnsigned(unsigned Value) override;
>> - unsigned getFrameRegister() override;
>> + bool isFrameRegister(unsigned MachineReg) override;
>> };
>>
>> void DIEDwarfExpression::EmitOp(uint8_t Op, const char* Comment) {
>> @@ -67,8 +67,8 @@ void DIEDwarfExpression::EmitSigned(int
>> void DIEDwarfExpression::EmitUnsigned(unsigned Value) {
>> DU.addUInt(DIE, dwarf::DW_FORM_udata, Value);
>> }
>> -unsigned DIEDwarfExpression::getFrameRegister() {
>> - return getTRI()->getFrameRegister(*AP.MF);
>> +bool DIEDwarfExpression::isFrameRegister(unsigned MachineReg) {
>> + return MachineReg == getTRI()->getFrameRegister(*AP.MF);
>> }
>>
>>
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu <mailto:llvm-commits at cs.uiuc.edu>
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits <http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150114/57c03e25/attachment.html>
More information about the llvm-commits
mailing list