[PATCH] ADCE: Remove debug info intrinsics in dead scopes
Adrian Prantl via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 29 15:59:23 PDT 2016
> On Mar 29, 2016, at 3:17 PM, Duncan P. N. Exon Smith <dexonsmith at apple.com> wrote:
>
>
>> On 2016-Mar-29, at 12:58, Adrian Prantl <aprantl at apple.com> wrote:
>>
>>>
>>> On Mar 29, 2016, at 12:48 PM, Adrian Prantl via llvm-commits <llvm-commits at lists.llvm.org> wrote:
>>>
>>>
>>>> On Mar 29, 2016, at 12:34 PM, Duncan P. N. Exon Smith <dexonsmith at apple.com> wrote:
>>>>
>>>> During ADCE, track which debug info scopes still have live references
>>>> from the code, and delete debug info intrinsics for the dead ones.
>>>>
>>>> These intrinsics describe the locations of variables (in registers or
>>>> stack slots). If there's no code left corresponding to a variable's
>>>> scope, then there's no way to reference the variable in the debugger and
>>>> it doesn't matter what its value is.
>>>>
>>>> I add a DEBUG printout when the described location in an SSA register,
>>>> in case it helps some trying to track down why locations get lost.
>>>> However, we still delete these; the root problem is that the scope
>>>> itself isn't attached to any real code.
>>>
>>> Thanks!
>>>
>>>>
>>>> <0001-ADCE-Remove-debug-info-intrinsics-in-dead-scopes.patch>
>>>
>>> One review comment: There should also be a testcase where the scope is in an inlined function.
>>
>> Thinking of to, there should also be a negative test where the dbg intrinsic is the last remaining instruction in its scope but there is another instruction in a child-scope of the intrinsic’s scope, thus preventing the optimization from happening.
>>
>> -- adrian
>
> Added both cases. Please have another look!
thanks, LGTM now!
-- adrian
>
> <0001-ADCE-Remove-debug-info-intrinsics-in-dead-scopes-v2.patch>
More information about the llvm-commits
mailing list