Skip to content
  1. Jul 22, 2009
  2. Jul 17, 2009
    • Eli Friedman's avatar
      Replace isTrapping with a new, similar method called · b8f6a4fc
      Eli Friedman authored
      isSafeToSpeculativelyExecute. The new method is a bit closer to what 
      the callers actually care about in that it rejects more things callers 
      don't want.  It also adds more precise handling for integer 
      division, and unifies code for analyzing the legality of a speculative 
      load.
      
      llvm-svn: 76150
      b8f6a4fc
  3. Jul 16, 2009
  4. Jul 15, 2009
  5. Jul 10, 2009
  6. Jul 06, 2009
  7. Jul 02, 2009
  8. May 06, 2009
  9. Nov 27, 2008
  10. Sep 04, 2008
  11. Jun 12, 2008
  12. Jun 11, 2008
  13. May 23, 2008
  14. May 16, 2008
  15. May 15, 2008
  16. May 13, 2008
  17. Apr 21, 2008
  18. Apr 14, 2008
  19. Apr 13, 2008
  20. Mar 22, 2008
  21. Dec 29, 2007
  22. Nov 04, 2007
  23. May 06, 2007
  24. May 03, 2007
  25. May 02, 2007
  26. May 01, 2007
  27. Feb 06, 2007
  28. Dec 19, 2006
  29. Dec 06, 2006
  30. Nov 26, 2006
  31. Sep 27, 2006
  32. Sep 10, 2006
  33. Sep 07, 2006
    • Chris Lattner's avatar
      Throttle back tail duplication to avoid creating really ugly sequences of code. · c465046e
      Chris Lattner authored
      For Transforms/TailDup/if-tail-dup.ll, f.e., it produces:
      
      _foo:
              movl 8(%esp), %eax
              movl 4(%esp), %ecx
              testl $1, %ecx
              je LBB1_2       #cond_next
      LBB1_1: #cond_true
              movl $1, (%eax)
      LBB1_2: #cond_next
              testl $2, %ecx
              je LBB1_4       #cond_next10
      LBB1_3: #cond_true6
              movl $1, 4(%eax)
      LBB1_4: #cond_next10
              testl $4, %ecx
              je LBB1_6       #cond_next18
      LBB1_5: #cond_true14
              movl $1, 8(%eax)
      LBB1_6: #cond_next18
              testl $8, %ecx
              je LBB1_8       #return
      LBB1_7: #cond_true22
              movl $1, 12(%eax)
              ret
      LBB1_8: #return
              ret
      
      instead of:
      
      _foo:
              movl 4(%esp), %eax
              testl $2, %eax
              sete %cl
              movl 8(%esp), %edx
              testl $1, %eax
              je LBB1_2       #cond_next
      LBB1_1: #cond_true
              movl $1, (%edx)
              testb %cl, %cl
              jne LBB1_4      #cond_next10
              jmp LBB1_3      #cond_true6
      LBB1_2: #cond_next
              testb %cl, %cl
              jne LBB1_4      #cond_next10
      LBB1_3: #cond_true6
              movl $1, 4(%edx)
              testl $4, %eax
              je LBB1_6       #cond_next18
              jmp LBB1_5      #cond_true14
      LBB1_4: #cond_next10
              testl $4, %eax
              je LBB1_6       #cond_next18
      LBB1_5: #cond_true14
              movl $1, 8(%edx)
              testl $8, %eax
              je LBB1_8       #return
              jmp LBB1_7      #cond_true22
      LBB1_6: #cond_next18
              testl $8, %eax
              je LBB1_8       #return
      LBB1_7: #cond_true22
              movl $1, 12(%edx)
              ret
      LBB1_8: #return
              ret
      
      llvm-svn: 30158
      c465046e
  34. Aug 28, 2006
  35. Jan 23, 2006
  36. Apr 22, 2005
  37. Nov 22, 2004
  38. 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
  39. Oct 06, 2004
Loading