- Nov 29, 2004
-
-
Chris Lattner authored
llvm-svn: 18363
-
- Nov 28, 2004
-
-
Reid Spencer authored
* Make sure we handle signed to unsigned conversion correctly * Move this visitSetCondInst case to its own method. llvm-svn: 18312
-
Chris Lattner authored
llvm-svn: 18309
-
- Nov 27, 2004
-
-
Chris Lattner authored
occurs many times in crafty llvm-svn: 18273
-
- Nov 26, 2004
-
-
Chris Lattner authored
allows us to hoist more loads in some cases. llvm-svn: 18265
-
- Nov 22, 2004
-
-
Chris Lattner authored
llvm-svn: 18110
-
Chris Lattner authored
llvm-svn: 18109
-
Chris Lattner authored
Patch contributed by Michael McCracken! llvm-svn: 18108
-
- Nov 20, 2004
-
-
Misha Brukman authored
llvm-svn: 18028
-
- Nov 19, 2004
-
-
Chris Lattner authored
Morten Ofstad. llvm-svn: 17996
-
Chris Lattner authored
llvm-svn: 17992
-
- Nov 18, 2004
-
-
Chris Lattner authored
llvm-svn: 17970
-
Chris Lattner authored
llvm-svn: 17956
-
- Nov 16, 2004
-
-
Chris Lattner authored
llvm-svn: 17897
-
- Nov 15, 2004
-
-
Reid Spencer authored
Patch contributed by Morten Ofstad. llvm-svn: 17830
-
Chris Lattner authored
llvm-svn: 17825
-
Chris Lattner authored
llvm-svn: 17824
-
Chris Lattner authored
llvm-svn: 17821
-
Chris Lattner authored
1. Speedup getValueState by having it not consider Arguments. It's better to just add them before we start SCCP'ing. 2. SCCP can delete the contents of dead blocks. No really, it's ok! This reduces the size of the IR for subsequent passes, even though simplifycfg would do the same job. In practice, simplifycfg does not run until much later than sccp in gccas llvm-svn: 17820
-
Chris Lattner authored
llvm-svn: 17818
-
Chris Lattner authored
class. The only changes are minor: * Do not try to SCCP instructions that return void in the rewrite loop. This is silly and fool hardy, wasting a map lookup and adding an entry to the map which is never used. * If we decide something has an undefined value, rewrite it to undef, potentially leading to further simplications. llvm-svn: 17816
-
- Nov 14, 2004
-
-
Chris Lattner authored
value. This allows us to turn more globals into constants and eliminate them. This patch implements GlobalOpt/load-store-global.llx. Note that this patch speeds up 255.vortex from: Output/255.vortex.out-cbe.time:program 7.640000 Output/255.vortex.out-llc.time:program 9.810000 to: Output/255.vortex.out-cbe.time:program 7.250000 Output/255.vortex.out-llc.time:program 9.490000 Which isn't bad at all! llvm-svn: 17746
-
Chris Lattner authored
If this happens, detect it early instead of relying on instcombine to notice it later. This can be a big speedup, because PHI nodes can have many incoming values. llvm-svn: 17741
-
Chris Lattner authored
This exposes subsequent optimization possiblities and reduces code size. This triggers 1423 times in spec. llvm-svn: 17740
-
Chris Lattner authored
%X = alloca ... %Y = alloca ... X == Y into false. This allows us to simplify some stuff in eon (and probably many other C++ programs) where operator= was checking for self assignment. Folding this allows us to SROA several additional structs. llvm-svn: 17735
-
Chris Lattner authored
llvm-svn: 17734
-
Chris Lattner authored
constant value. This makes the return value dead and allows for simplification in the caller. This implements IPConstantProp/return-constant.ll This triggers several dozen times throughout SPEC. llvm-svn: 17730
-
Chris Lattner authored
of the array is just two. This occurs 8 times in gcc, 6 times in crafty, and 12 times in 099.go. This implements ScalarRepl/sroa_two.ll llvm-svn: 17727
-
Chris Lattner authored
llvm-svn: 17724
-
Chris Lattner authored
llvm-svn: 17719
-
Chris Lattner authored
argument pointers. This is only valid to do if the function already unconditionally loaded an argument or if the pointer passed in is known to be valid. Make sure to do the required checks. This fixed ArgumentPromotion/control-flow.ll and the Burg program. llvm-svn: 17718
-
- Nov 13, 2004
-
-
Chris Lattner authored
for (X * C1) + (X * C2) (where * can be mul or shl), allowing us to fold: Y+Y+Y+Y+Y+Y+Y+Y into %tmp.8 = shl long %Y, ubyte 3 ; <long> [#uses=1] instead of %tmp.4 = shl long %Y, ubyte 2 ; <long> [#uses=1] %tmp.12 = shl long %Y, ubyte 2 ; <long> [#uses=1] %tmp.8 = add long %tmp.4, %tmp.12 ; <long> [#uses=1] This implements add.ll:test25 Also add support for (X*C1)-(X*C2) -> X*(C1-C2), implementing sub.ll:test18 llvm-svn: 17704
-
Chris Lattner authored
(X + (X << C2)) --> X * ((1 << C2) + 1) ((X << C2) + X) --> X * ((1 << C2) + 1) This means that we now canonicalize "Y+Y+Y" into: %tmp.2 = mul long %Y, 3 ; <long> [#uses=1] instead of: %tmp.10 = shl long %Y, ubyte 1 ; <long> [#uses=1] %tmp.6 = add long %Y, %tmp.10 ; <long> [#uses=1] llvm-svn: 17701
-
Chris Lattner authored
will actually get it. llvm-svn: 17700
-
Chris Lattner authored
llvm-svn: 17699
-
Chris Lattner authored
instructions, setting DefBlock to a block it did not have dom info for. llvm-svn: 17697
-
- Nov 12, 2004
-
-
Chris Lattner authored
llvm-svn: 17696
-
- Nov 11, 2004
-
-
Chris Lattner authored
as IPCP opportunities. llvm-svn: 17680
-
Chris Lattner authored
llvm-svn: 17679
-
- Nov 10, 2004
-
-
Chris Lattner authored
This implements IPConstantProp/recursion.ll llvm-svn: 17666
-