[SCEV] Try to prove predicates by splitting them
authorSanjoy Das <sanjoy@playingwithpointers.com>
Fri, 2 Oct 2015 18:50:30 +0000 (18:50 +0000)
committerSanjoy Das <sanjoy@playingwithpointers.com>
Fri, 2 Oct 2015 18:50:30 +0000 (18:50 +0000)
commit8c0c4322ddf0a4e77689a0d19c1604daa60cd442
tree6e71edf98c4d533e2c7cd3fb2166be1550d94771
parent87b7b2f3a0fc9044495fbb67faa50eb0f3fc5ade
[SCEV] Try to prove predicates by splitting them

Summary:
This change teaches SCEV that to prove `A u< B` it is sufficient to
prove each of these facts individually:

 - B >= 0
 - A s< B
 - A >= 0

In practice, SCEV sometimes finds it easier to prove these facts
individually than to prove `A u< B` as one atomic step.

Reviewers: reames, atrick, nlewycky, hfinkel

Subscribers: sanjoy, llvm-commits

Differential Revision: http://reviews.llvm.org/D13042

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249168 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Analysis/ScalarEvolution.h
lib/Analysis/ScalarEvolution.cpp
test/Transforms/IndVarSimplify/eliminate-comparison.ll