Fix PR2002. Suppose n is the initial value for the induction
authorWojciech Matyjewicz <wmatyjewicz@fastmail.fm>
Tue, 12 Feb 2008 15:09:36 +0000 (15:09 +0000)
committerWojciech Matyjewicz <wmatyjewicz@fastmail.fm>
Tue, 12 Feb 2008 15:09:36 +0000 (15:09 +0000)
commit7b5b76835a608155a94f6b08ea9c6091cb070815
tree80946930e84cc1b0228e8ab9081da9fe304e68e5
parentb6c36e405899a9bc3ac526b27c6db1f44fec69d4
Fix PR2002. Suppose n is the initial value for the induction
variable (with step 1) and m is its final value. Then, the correct trip
count is SMAX(m,n)-n. Previously, we used SMAX(0,m-n), but m-n may
overflow and can't in general be interpreted as signed.

Patch by Nick Lewycky.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47007 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Analysis/ScalarEvolution.cpp
test/Analysis/ScalarEvolution/2008-02-12-SMAXTripCount.ll [new file with mode: 0644]