Teach ScalarEvolution to sharpen range information.
authorSanjoy Das <sanjoy@playingwithpointers.com>
Wed, 15 Oct 2014 19:25:28 +0000 (19:25 +0000)
committerSanjoy Das <sanjoy@playingwithpointers.com>
Wed, 15 Oct 2014 19:25:28 +0000 (19:25 +0000)
commit90c2f1455ae1e88aa31e68f4e7cdcdf955c945ed
treeadd8f3ca67de38efd5a3ee5741212f281e41f196
parent74cd020fcaa1e5abd31fcbad1c0be0319a3bf790
Teach ScalarEvolution to sharpen range information.

If x is known to have the range [a, b) in a loop predicated by (icmp
ne x, a), its range can be sharpened to [a + 1, b).  Get
ScalarEvolution and hence IndVars to exploit this fact.

This change triggers an optimization to widen-loop-comp.ll, so it had
to be edited to get it to pass.

phabricator: http://reviews.llvm.org/D5639
llvm-svn: 219834
llvm/lib/Analysis/ScalarEvolution.cpp
llvm/test/Transforms/IndVarSimplify/sharpen-range-metadata.ll [new file with mode: 0644]
llvm/test/Transforms/IndVarSimplify/widen-loop-comp.ll