Skip to content
  1. Apr 22, 2005
  2. Apr 21, 2005
    • Chris Lattner's avatar
      Improve doxygen documentation, patch contributed by Evan Jones! · 7ceb081f
      Chris Lattner authored
      llvm-svn: 21393
      7ceb081f
    • Chris Lattner's avatar
      Teach simplifycfg that setcc is cheap and non-trapping, so that it can · b38b443b
      Chris Lattner authored
      convert this:
      
              %tmp.1 = seteq int %i, 0                ; <bool> [#uses=1]
              br bool %tmp.1, label %shortcirc_done, label %shortcirc_next
      
      shortcirc_next:         ; preds = %entry
              %tmp.4 = seteq int %j, 0                ; <bool> [#uses=1]
              br label %shortcirc_done
      
      shortcirc_done:         ; preds = %shortcirc_next, %entry
              %shortcirc_val = phi bool [ %tmp.4, %shortcirc_next ], [ true, %entry ]         ; <bool> [#uses=1]
      
      to this:
              %tmp.1 = seteq int %i, 0                ; <bool> [#uses=1]
              %tmp.4 = seteq int %j, 0                ; <bool> [#uses=1]
              %shortcirc_val = select bool %tmp.1, bool true, bool %tmp.4             ; <bool> [#uses=1]
      
      ... which is later simplified by instcombine into an or.
      
      llvm-svn: 21388
      b38b443b
  3. Apr 12, 2005
  4. Mar 17, 2005
  5. Mar 15, 2005
  6. Mar 05, 2005
  7. Feb 27, 2005
  8. Feb 26, 2005
  9. Feb 24, 2005
    • Chris Lattner's avatar
      Implement Transforms/SimplifyCFG/switch_thread.ll · 1cca959e
      Chris Lattner authored
      This does a simple form of "jump threading", which eliminates CFG edges that
      are provably dead.  This triggers 90 times in the external tests, and
      eliminating CFG edges is always always a good thing! :)
      
      llvm-svn: 20300
      1cca959e
  10. Jan 29, 2005
  11. Jan 01, 2005
    • Chris Lattner's avatar
      Implement SimplifyCFG/DeadSetCC.ll · 3215bb60
      Chris Lattner authored
      SimplifyCFG is one of those passes that we use for final cleanup: it should
      not rely on other passes to clean up its garbage.  This fixes the "why are
      trivially dead setcc's in the output of gccas" problem.
      
      llvm-svn: 19212
      3215bb60
  12. Dec 11, 2004
  13. Dec 10, 2004
  14. Nov 30, 2004
  15. Nov 20, 2004
  16. Nov 13, 2004
  17. Nov 01, 2004
    • 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
  18. Oct 28, 2004
  19. Oct 22, 2004
  20. Oct 19, 2004
  21. Oct 18, 2004
  22. Oct 17, 2004
  23. Oct 16, 2004
  24. Oct 14, 2004
  25. Oct 13, 2004
  26. Oct 11, 2004
  27. Sep 29, 2004
  28. Sep 19, 2004
Loading