<div dir="ltr">Hi Johannes,<br><div><br></div><div>Sanjoy has given you great information already.</div><div><br></div><div>On Sun, Apr 10, 2016 at 5:19 PM, Sanjoy Das <span dir="ltr"><<a href="mailto:sanjoy@playingwithpointers.com" target="_blank">sanjoy@playingwithpointers.com</a>></span> wrote:<br></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class="">Johannes Doerfert wrote:<br>
> Is there any plan to use e.g., post-dominance information to<br>
> propagate wrapping flags?<br>
<br></span>
None that I'm aware of.<span class=""><br>
<br>
> If x +nsw y post-dominates the entry block<br>
> [and is used in some side-effect instruction] the SCEV could be marked<br>
> as non-wrapping, couldn't it?<br>
<br></span>
Yes, but we have to be careful to account for exceptions, infinitely<br>
looping functions, exit(0) etc.  I.e. in<br>
<br>
void foo() {<br>
  use(x + y);<br>
  exit(0);<br>
  use(x +nsw y);<br>
}<br>
<br>
the nsw in the later x+y cannot be transferred to the former x+y<br>
(assume use is a side effecting use).<span class=""><br>
<br></span></blockquote><div>The code I wrote to handle this could be made more powerful, e.g. by introducing an analysis pass for strong post-dominance (as opposed to the usual kind of post-dominance). There was a brief amount of discussion on this a while back:</div><div><br></div><div>  <a href="https://groups.google.com/forum/#!topic/llvm-dev/CBJY51__wOE">https://groups.google.com/forum/#!topic/llvm-dev/CBJY51__wOE</a><br></div><div><br></div><div>I don't know if there's been any developments on that since then.</div><div><br></div><div>Bjarke <br></div></div></div></div>