<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
</span>In theory you could do this transform:<br>
<br>
void f(int*a) {<br>
  *a = 20;<br>
  call @mayunwind_readnone();<br>
  *a = 30;<br>
}<br>
<br>
=><br>
<br>
void f(int*a) {<br>
  // *a = 20;<br>
  invoke @mayunwind_readnone() to %normal unwind %unwind<br>
<br>
normal:<br>
  *a = 30;<br>
  ret void<br>
<br>
unwind:<br>
  %exc = landingpad<br>
  *a = 20;<br>
  resume %exc<br>
}<br>
<br>
(That is, PRE the store around the implicit edge by making it explicit.)<br>
<br>
Generally though I don't see us doing this except under exceptional<br>
(no pun intended!) circumstances.<br></blockquote><div><br></div><div><br></div><div>FWIW: I don't believe i've ever seen or written a modern PRE that doesn't run screaming from exception edges.</div><div>(admittedly, most of them induce ordering constraints normal PRE algorithms can't obey easily)</div><div><br></div><div><br></div></div></div></div>