Skip to content
  1. Nov 15, 2004
  2. Nov 14, 2004
  3. Nov 13, 2004
    • Chris Lattner's avatar
      Simplify handling of shifts to be the same as we do for adds. Add support · 8c3e7b92
      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
      8c3e7b92
    • Chris Lattner's avatar
      Fold: · 4efe20a1
      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
      4efe20a1
    • Chris Lattner's avatar
      Lazily create the abort message, so only translation units that use unwind · 2858e175
      Chris Lattner authored
      will actually get it.
      
      llvm-svn: 17700
      2858e175
  4. Nov 12, 2004
  5. Nov 07, 2004
  6. Nov 05, 2004
  7. Nov 02, 2004
    • Chris Lattner's avatar
      * Rearrange code slightly · 96f66164
      Chris Lattner authored
      * Disable broken transforms for simplifying (setcc (cast X to larger), CI)
        where CC is not != or ==
      
      llvm-svn: 17422
      96f66164
  8. Nov 01, 2004
    • Chris Lattner's avatar
      Speed up the tail duplication pass on the testcase below from 68.2s to 1.23s: · 8af74249
      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
      8af74249
  9. Oct 28, 2004
  10. Oct 27, 2004
  11. Oct 25, 2004
  12. Oct 22, 2004
  13. Oct 19, 2004
  14. Oct 18, 2004
  15. Oct 17, 2004
  16. Oct 16, 2004
Loading