<div dir="ltr">Hi, Tim,<div><br></div><div>I see your point. Only if I set the func2 to 'readonly', the llvm.foo can be loop invariant. Thanks.</div><div><br></div><div>Regards,</div><div><br></div><div>Xiangyang</div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-12-01 15:51 GMT-05:00 Tim Northover <span dir="ltr"><<a href="mailto:t.p.northover@gmail.com" target="_blank">t.p.northover@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 1 December 2015 at 12:33, Xiangyang Guo via llvm-dev<br>
<span class=""><<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br>
> if I have the following IR, LICM doesn't work again, even if I use<br>
> '-loop-rotate' firstly. In this IR, the return value of intrinsic function<br>
> "foo" is used by another function "func2" as parameter.  However, for the<br>
> intrinsic function "foo", the parameters are still loop invariant. Do you<br>
> know why this happens? Thanks a lot.<br>
<br>
</span>Is there anything telling LLVM that func2 won't write to memory and<br>
change the value returned by llvm.foo?<br>
<br>
Cheers.<br>
<span class="HOEnZb"><font color="#888888"><br>
Tim.<br>
</font></span></blockquote></div><br></div>