<div dir="ltr">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?<br><br>I'm assuming you want to do this to reduce IR size early on? (pre-(Thin)LTO merge?) Maybe as a separate pass?<br><br>If it's just to reduce debug info output - maybe better to just delay until IR generation? (perhaps we already do this, I forget?)</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 29, 2016 at 12:34 PM, Duncan P. N. Exon Smith <span dir="ltr"><<a href="mailto:dexonsmith@apple.com" target="_blank">dexonsmith@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">During ADCE, track which debug info scopes still have live references<br>
from the code, and delete debug info intrinsics for the dead ones.<br>
<br>
These intrinsics describe the locations of variables (in registers or<br>
stack slots).  If there's no code left corresponding to a variable's<br>
scope, then there's no way to reference the variable in the debugger and<br>
it doesn't matter what its value is.<br>
<br>
I add a DEBUG printout when the described location in an SSA register,<br>
in case it helps some trying to track down why locations get lost.<br>
However, we still delete these; the root problem is that the scope<br>
itself isn't attached to any real code.<br>
<br>
</blockquote></div><br></div>