[llvm-commits] [llvm] r130339 - in /llvm/trunk/lib/CodeGen/AsmPrinter: DwarfCompileUnit.cpp DwarfCompileUnit.h DwarfDebug.cpp
Devang Patel
dpatel at apple.com
Thu May 12 10:52:02 PDT 2011
On May 12, 2011, at 7:47 AM, Sylvere Teissier wrote:
> Le 28/04/2011 00:45, Devang Patel a écrit :
>> Author: dpatel
>> Date: Wed Apr 27 17:45:24 2011
>> New Revision: 130339
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=130339&view=rev
>> Log:
>> Simplify handling of variables with complex address (i.e. blocks variables)
>>
>> Modified:
>> llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
>> llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
>> llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
>
> Hi, there is something that seems not clear for me here:
>
>> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=130339&r1=130338&r2=130339&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Wed Apr 27 17:45:24 2011
>> @@ -699,11 +699,19 @@
>> const TargetRegisterInfo *TRI = Asm->TM.getRegisterInfo();
>> if (DVInsn->getOperand(1).isImm() &&
>> TRI->getFrameRegister(*Asm->MF) == RegOp.getReg()) {
>> - VariableCU->addFrameVariableAddress(DV, VariableDie,
>> - DVInsn->getOperand(1).getImm());
>> - updated = true;
>> - } else
>> - updated = VariableCU->addRegisterAddress(VariableDie, RegOp);
>> + unsigned FrameReg = 0;
>> + const TargetFrameLowering *TFI = Asm->TM.getFrameLowering();
>
>
> My question is for this line:
>
>> + int Offset =
>> + TFI->getFrameIndexReference(*Asm->MF,
>> + DVInsn->getOperand(1).getImm(),
>> + FrameReg);
>
> During frame elimination the Target backend function
> "RegisterInfo::eliminateFrameIndex" has converted the DVInsn
>
> from something like this:
>
> DBG_VALUE <fi#12>
>
> to something like this:
>
> DBG_VALUE %SP,44
>
In that case DVInsn.getNumOperands() == 3 condition will fail.
-
Devang
> so here :
>
> DVInsn->getOperand(1).getImm()
>
> returns 44
>
> but TFI->getFrameIndexReference FI argument require a frame index ( 12
> in this example), not an offset in byte.
>
> Is there something wrong in this code or did I misunderstand something ?
>
More information about the llvm-commits
mailing list