llvm-6502/lib/Transforms
Andrew Trick 4781d8ee1c indvars: Linear function test replace should avoid reusing undef.
Fixes PR13371: indvars pass incorrectly substitutes 'undef' values.

I do not like this fix. It's needed until/unless the meaning of undef
changes. It attempts to be complete according to the IR spec, but I
don't have much confidence in the implementation given the difficulty
testing undefined behavior. Worse, this invalidates some of my
hard-fought work on indvars and LSR to optimize pointer induction
variables. It results benchmark regressions, which I'll track
internally. On x86_64 no LTO I see:

-3% huffbench
-3% 400.perlbench
-8% fhourstones

My only suggestion for recovering is to change the meaning of
undef. If we could trust an arbitrary instruction to produce a some
real value that can be manipulated (e.g. incremented) according to
non-undef rules, then this case could be easily handled with SCEV.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160421 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-18 04:35:10 +00:00
..
Hello Since the Hello pass is built as a loadable dynamic library, don't try to convert it to new-style registration yet. 2010-10-07 00:31:16 +00:00
InstCombine Back out r160101 and instead implement a dag combine to recover from instcombine transformation. 2012-07-17 18:54:11 +00:00
Instrumentation [asan] more code to merge crash callbacks. Doesn't fully work yet, but allows to hold performance experiments 2012-07-17 11:04:12 +00:00
IPO GlobalOpt forgot to handle bitcast when analyzing globals. Found by inspection. 2012-07-02 18:55:39 +00:00
Scalar indvars: Linear function test replace should avoid reusing undef. 2012-07-18 04:35:10 +00:00
Utils Move llvm/Support/MDBuilder.h to llvm/MDBuilder.h, to live with 2012-07-15 23:26:50 +00:00
Vectorize Precompute SCEV pointer analysis prior to instruction fusion in BBVectorize. 2012-06-28 05:42:45 +00:00
CMakeLists.txt Add a basic-block autovectorization pass. 2012-02-01 03:51:43 +00:00
LLVMBuild.txt Add a basic-block autovectorization pass. 2012-02-01 03:51:43 +00:00
Makefile Add a basic-block autovectorization pass. 2012-02-01 03:51:43 +00:00