[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:39:04 PST 2016
I'd missed the fact that j wasn't just being decremented. This isn't as
easy as I said.
Philip
On 03/03/2016 02:36 PM, Philip Reames via llvm-dev wrote:
> 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
>>
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160303/8e011711/attachment.html>
More information about the llvm-dev
mailing list