indvars: Prototyping Sign/ZeroExtend elimination without canonical IVs.
authorAndrew Trick <atrick@apple.com>
Fri, 20 May 2011 18:25:42 +0000 (18:25 +0000)
committerAndrew Trick <atrick@apple.com>
Fri, 20 May 2011 18:25:42 +0000 (18:25 +0000)
commitf85092c25525f75eef6982ffa40c9b48b87da987
tree1db3646c4f121e6e75f48a399caf4a3ffeebc759
parentcde87e2377bd3853d1485db27b295616066d020d
indvars: Prototyping Sign/ZeroExtend elimination without canonical IVs.

No functionality enabled by default. Use -disable-iv-rewrite.
Extended IVUsers to keep track of the phi that represents the users' IV.
Added the WidenIV transform to replace a narrow IV with a wide IV
by doing a one-for-one replacement of IV users instead of expanding the
SCEV expressions. [sz]exts are removed and truncs are inserted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131744 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Analysis/IVUsers.h
lib/Analysis/IVUsers.cpp
lib/Transforms/Scalar/IndVarSimplify.cpp
lib/Transforms/Scalar/LoopStrengthReduce.cpp