ScalarEvolution: HowFarToZero was wrongly using signed division
authorDavid Majnemer <david.majnemer@gmail.com>
Sun, 16 Nov 2014 07:30:35 +0000 (07:30 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Sun, 16 Nov 2014 07:30:35 +0000 (07:30 +0000)
commit62baa594d786389844d40990fb8a0e59b5ad1f80
tree25e3a9b7a0242282a6feb75d30b23530ea8bb7e4
parentf5dc5ae36bd7f494aa1fd937be7a8177b9b277fa
ScalarEvolution: HowFarToZero was wrongly using signed division

HowFarToZero was supposed to use unsigned division in order to calculate
the backedge taken count.  However, SCEVDivision::divide performs signed
division.  Unless I am mistaken, no users of SCEVDivision actually want
signed arithmetic: switch to udiv and urem.

This fixes PR21578.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222093 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Analysis/ScalarEvolution.cpp
test/Analysis/ScalarEvolution/trip-count-pow2.ll