[llvm] r175023 - Debug Info: LiveDebugVarible can remove DBG_VALUEs, make sure we emit them back.

Eric Christopher echristo at gmail.com
Tue Feb 12 18:45:07 PST 2013


Here's the bug report that exists for this as well:

http://llvm.org/bugs/show_bug.cgi?id=14575

-eric

On Tue, Feb 12, 2013 at 6:37 PM, Eric Christopher <echristo at gmail.com>wrote:

>
>
> On Tue, Feb 12, 2013 at 5:14 PM, Manman Ren <mren at apple.com> wrote:
>
>> Author: mren
>> Date: Tue Feb 12 19:14:49 2013
>> New Revision: 175023
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=175023&view=rev
>> Log:
>> Debug Info: LiveDebugVarible can remove DBG_VALUEs, make sure we emit
>> them back.
>>
>> RegisterCoalescer used to depend on LiveDebugVariable. LDV removes
>> DBG_VALUEs
>> without emitting them at the end.
>>
>>
> This isn't quite what's going on, it's mostly that we kept adding all the
> information and then never bothered to emit it.
>
>
>> We fix this by removing LDV from RegisterCoalescer. Also add an assertion
>> to
>> make sure we call emitDebugValues if DBG_VALUEs are removed at
>> runOnMachineFunction.
>>
>> rdar://problem/13183203
>> Reviewed by Andy & Jakob
>>
>>
> For function parameters this is still somewhat of a hack. The correct way
> to fix this is to change the representation we use for function arguments
> to use the incoming value and track that for location information - it
> would obviate the need to scan through the function collecting function
> parameters as if they were local variables. Also, it shouldn't depend upon
> whether or not we're enabling misched or not, a simple testcase should be
> an unused parameter and dce.
>
> +define void @Proc8(i32* nocapture %Array1Par, [51 x i32]* nocapture
> %Array2Par, i32 %IntParI1, i32 %IntParI2) nounwind optsize ssp uwtable {
>
> You also shouldn't need ssp/uwtable on this.
>
>
>>  class LiveDebugVariables : public MachineFunctionPass {
>>    void *pImpl;
>> +  /// Whether emitDebugValues is called.
>> +  bool EmitDone;
>> +  /// Whether the machine function is modified during the pass.
>> +  bool ModifiedMF;
>>
>
>  Any reason why these aren't going into the pass impl?
>
> Jakob: It looks like we don't need the value renaming machinery any more,
> i.e.
>
> void LiveDebugVariables::renameRegister(unsigned OldReg, unsigned NewReg,
> unsigned SubIdx)
>
> since I'm guessing the register allocator keeps the virtual register map
> up to date that we use later when we actually run the pass? If so, Manman,
> can you delete the now dead code?
>
> Thanks!
>
> -eric
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130212/f50abdb1/attachment.html>


More information about the llvm-commits mailing list