<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Jul 30, 2014 at 12:46 AM, Nick Lewycky <span dir="ltr"><<a href="mailto:nicholas@mxc.ca" target="_blank">nicholas@mxc.ca</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">Rafael Ávila de Espíndola wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This is fine by me.<br>
<br>
I agree with Reid that we need to figure out what to do with  the lifetime intrinsics, but lets not miscompile code while we do that.<br>
</blockquote>
<br></div>
My proposal is that we should combine lifetime.start and lifetime.end into a single intrinsic that means "store undef to through this pointer" but doesn't get optimized away like store to undef does. The additional optz'n possible from having distinct start and end isn't worth it.<br>

<br>
There's an obvious question of whether storing to undef should just work that way on its own. Anyone wanting to implement that should be aware that historically we've used store to undef as a way for passes which can't modify the CFG to indicate unreachable, so we'll need an answer for that.</blockquote>
<div></div></div><br></div><div class="gmail_extra">Hang on, store to undef or store undef to the pointer?  I think you mean storing undef to / through the pointer, in which case, I don't think we use that for unreachable.</div>
</div>