Skip to content
  1. Nov 15, 2004
    • Chris Lattner's avatar
      Substantially refactor the SCCP class into an SCCP pass and an SCCPSolver · 074be1f6
      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
      074be1f6
  2. Nov 14, 2004
  3. Nov 13, 2004
  4. Nov 12, 2004
  5. Nov 11, 2004
  6. Nov 10, 2004
  7. Nov 09, 2004
  8. Nov 07, 2004
  9. Nov 05, 2004
  10. 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
  11. 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
    • Chris Lattner's avatar
      Do not compute the predecessor list for a block unless we need it. · 93d1e39f
      Chris Lattner authored
      This speeds up simplifycfg on this program, from 44.87s to 0.29s (with
      a profiled build):
      
       #define CL0(a) case a: 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 testcase is contrived to expose N^2 behavior, but this patch should speedup
      simplifycfg on any programs that use large switch statements.  This testcase
      comes from GCC PR17895.
      
      llvm-svn: 17389
      93d1e39f
  12. Oct 28, 2004
  13. Oct 27, 2004
  14. Oct 25, 2004
  15. Oct 22, 2004
  16. Oct 20, 2004
Loading