- Dec 09, 2004
-
-
Chris Lattner authored
llvm-svn: 18693
-
Chris Lattner authored
llvm-svn: 18692
-
Chris Lattner authored
successor block. This turns cases like this: x = a op b if (c) { use x } into: if (c) { x = a op b use x } This triggers 3965 times in spec, and is tested by Regression/Transforms/InstCombine/sink_instruction.ll This appears to expose a bug in the X86 backend for 177.mesa, which I'm looking in to. llvm-svn: 18677
-
Alkis Evlogimenos authored
llvm-svn: 18674
-
- Dec 08, 2004
-
-
Chris Lattner authored
llvm-svn: 18670
-
- Dec 07, 2004
-
-
Reid Spencer authored
Add doInitialization method to avoid overloaded virtuals llvm-svn: 18602
-
- Dec 02, 2004
-
-
Chris Lattner authored
llvm-svn: 18439
-
- Nov 30, 2004
-
-
Chris Lattner authored
llvm-svn: 18387
-
- 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
Patch contributed by Michael McCracken! llvm-svn: 18108
-
- Nov 19, 2004
-
-
Chris Lattner authored
Morten Ofstad. llvm-svn: 17996
-
- 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
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
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
-
- 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
-
- Nov 12, 2004
-
-
Chris Lattner authored
llvm-svn: 17696
-
- Nov 07, 2004
-
-
Chris Lattner authored
llvm-svn: 17545
-
- Nov 05, 2004
-
-
Chris Lattner authored
llvm-svn: 17481
-
- Nov 02, 2004
-
-
Chris Lattner authored
* Disable broken transforms for simplifying (setcc (cast X to larger), CI) where CC is not != or == llvm-svn: 17422
-
- Nov 01, 2004
-
-
Chris Lattner authored
#define CL0(a) case a: f(); goto c; #define CL1(a) CL0(a##0) CL0(a##1) CL0(a##2) CL0(a##3) CL0(a##4) CL0(a##5) \ CL0(a##6) CL0(a##7) CL0(a##8) CL0(a##9) #define CL2(a) CL1(a##0) CL1(a##1) CL1(a##2) CL1(a##3) CL1(a##4) CL1(a##5) \ CL1(a##6) CL1(a##7) CL1(a##8) CL1(a##9) #define CL3(a) CL2(a##0) CL2(a##1) CL2(a##2) CL2(a##3) CL2(a##4) CL2(a##5) \ CL2(a##6) CL2(a##7) CL2(a##8) CL2(a##9) #define CL4(a) CL3(a##0) CL3(a##1) CL3(a##2) CL3(a##3) CL3(a##4) CL3(a##5) \ CL3(a##6) CL3(a##7) CL3(a##8) CL3(a##9) void f(); void a() { int b; c: switch (b) { CL4(1) } } This comes from GCC PR 15524 llvm-svn: 17390
-
- Oct 28, 2004
-
-
Reid Spencer authored
llvm-svn: 17286
-