[llvm-dev] Failure to turn a div by power of 2 into a single shift

Philip Reames via llvm-dev llvm-dev at lists.llvm.org
Thu Mar 3 14:36:36 PST 2016


SCEV should be able to easily prove that j is positive here.  I'm not 
sure where the right place to use that information would be in this 
case.  Sanjoy, can you comment?

Philip

On 03/03/2016 02:06 PM, Haicheng Wu wrote:
>
> Hello,
>
> I have  a simple loop like below
>
> int I, j;
>
> for (j = n; j > 1; j = i) {
>
>   i = j / 2;
>
> }
>
> The signed division can be safely turned into a single shift since j 
> is known to be positive from the loop guard.  LLVM currently cannot 
> find out j is positive and compiles the above division into 3 
> instructions.  Any thoughts on where to fix this?
>
> Thank you in advance,
>
> Haicheng
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160303/5e5af97e/attachment.html>


More information about the llvm-dev mailing list