llvm-project/llvm
Dan Gohman d76d71a291 Factor the code for collecting IV users out of LSR into an IVUsers class,
and generalize it so that it can be used by IndVarSimplify. Implement the
base IndVarSimplify transformation code using IVUsers. This removes
TestOrigIVForWrap and associated code, as ScalarEvolution now has enough
builtin overflow detection and folding logic to handle all the same cases,
and more. Run "opt -iv-users -analyze -disable-output" on your favorite
loop for an example of what IVUsers does.

This lets IndVarSimplify eliminate IV casts and compute trip counts in
more cases. Also, this happens to finally fix the remaining testcases
in PR1301.

Now that IndVarSimplify is being more aggressive, it occasionally runs
into the problem where ScalarEvolutionExpander's code for avoiding
duplicate expansions makes it difficult to ensure that all expanded
instructions dominate all the instructions that will use them. As a
temporary measure, IndVarSimplify now uses a FixUsesBeforeDefs function
to fix up instructions inserted by SCEVExpander. Fortunately, this code
is contained, and can be easily removed once a more comprehensive
solution is available.

llvm-svn: 71535
2009-05-12 02:17:14 +00:00
..
Xcode
autoconf Add terminal width detection to llvm::sys::Process. This is needed to 2009-05-11 18:05:52 +00:00
bindings
cmake Add terminal width detection to llvm::sys::Process. This is needed to 2009-05-11 18:05:52 +00:00
docs
examples
include Factor the code for collecting IV users out of LSR into an IVUsers class, 2009-05-12 02:17:14 +00:00
lib Factor the code for collecting IV users out of LSR into an IVUsers class, 2009-05-12 02:17:14 +00:00
projects
runtime
test Factor the code for collecting IV users out of LSR into an IVUsers class, 2009-05-12 02:17:14 +00:00
tools
unittests
utils
website
win32
CMakeLists.txt
CREDITS.TXT
LICENSE.TXT
Makefile
Makefile.common
Makefile.config.in
Makefile.rules
ModuleInfo.txt
README.txt
build-for-llvm-top.sh
configure Add terminal width detection to llvm::sys::Process. This is needed to 2009-05-11 18:05:52 +00:00
llvm.spec.in

README.txt

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for the Low Level 
Virtual Machine, a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments. 

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the HTML documentation provided in docs/index.html for further
assistance with LLVM.