[PATCH] ADCE: Remove debug info intrinsics in dead scopes

David Blaikie via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 30 09:18:30 PDT 2016


On Tue, Mar 29, 2016 at 10:59 PM, Duncan P. N. Exon Smith <
dexonsmith at apple.com> wrote:

> +Mehdi
>
> > On 2016-Mar-29, at 22:29, David Blaikie <dblaikie at gmail.com> wrote:
> >
> > Does it make sense to do this in ADCE and ADCE only? Lots of code can
> remove instructions & could be the place where a scope ceases to exist, so
> it seems strange to make this change only here, doesn't it?
>
> I thought about the algorithm, and then looked for a pass that was
> already doing something similar.  ADCE seemed to be good fit since it
> also needed three passes through the function.
>
> I had a look with Mehdi at the pass pipeline, and ADCE is run almost
> at the end.  It is run just before exit for -flto=thin, too.
>
> > I'm assuming you want to do this to reduce IR size early on?
> (pre-(Thin)LTO merge?)


^ ?


> Maybe as a separate pass?
>
> > If it's just to reduce debug info output - maybe better to just delay
> until IR generation? (perhaps we already do this, I forget?)
>
> Open to having a separate pass, but since ADCE was such a good fit
> (it similarly needed three passes through the IR, which I could just
> piggy-back on) and happened to run at the right times I decided not to
> think any further.
>

Hmm, rightio - I don't know too much about pass design (when we try to make
them independent, when we don't). So I'll leave it to you folks & others to
chime in if there are relevant guiding principles that should be applied
differently here.

- Dave


>
> > On Tue, 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.
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160330/ebfc89a4/attachment.html>


More information about the llvm-commits mailing list