llvm-6502/lib/Transforms
Chris Lattner 4e998b2fea Fold binary expressions and casts into PHI nodes that have all constant inputs.
This takes something like this:

%A = phi int [ 3, %cond_false.0 ], [ 2, %endif.0.i ], [ 2, %endif.1.i ]
%B = div int %tmp.243, 4

and turns it into:

%A = phi int [ 3/4, %cond_false.0 ], [ 2/4, %endif.0.i ], [ 2/4, %endif.1.i ]

which is later simplified (in this case) into %A = 0.

This triggers thousands of times in spec, for example, 269 times in 176.gcc.

This is tested by InstCombine/add.ll:test23 and set.ll:test18.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16582 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-29 05:07:12 +00:00
..
Hello Add a newline 2004-09-15 17:53:52 +00:00
Instrumentation 'Pass' should now not be derived from by clients. Instead, they should derive 2004-09-20 04:48:05 +00:00
IPO 'Pass' should now not be derived from by clients. Instead, they should derive 2004-09-20 04:48:05 +00:00
Scalar Fold binary expressions and casts into PHI nodes that have all constant inputs. 2004-09-29 05:07:12 +00:00
Utils Pull assignment out of for loop conditional in order for this to 2004-09-28 02:40:37 +00:00
ExprTypeConvert.cpp Add includes and use std:: for standard library calls to make code 2004-09-28 14:42:44 +00:00
LevelRaise.cpp Prototype more accurately 2004-09-20 04:43:57 +00:00
Makefile Added LLVM copyright notice to Makefiles. 2003-10-20 22:26:57 +00:00
TransformInternals.cpp Merge i*.h headers into Instructions.h as part of bug403. 2004-07-29 12:17:34 +00:00
TransformInternals.h Put all LLVM code into the llvm namespace, as per bug 109. 2003-11-11 22:41:34 +00:00