Skip to content
  1. Jul 12, 2010
  2. Jul 10, 2010
    • Duncan Sands's avatar
      The accumulator tail recursion transform claims to work for any associative · 82b21c08
      Duncan Sands authored
      operation, but the way it's implemented requires the operation to also be
      commutative.  So add a check for commutativity (and tweak the corresponding
      comments).  This makes no difference in practice since every associative
      LLVM instruction is also commutative!  Here's an example to show the need
      for commutativity: the accum_recursion.ll testcase calculates the factorial
      function.  Before the transformation the result of a call is
        ((((1*1)*2)*3)...)*x
      while afterwards it is
        (((1*x)*(x-1))...*2)*1
      which clearly requires both associativity and commutativity of * to be equal
      to the original.
      
      llvm-svn: 108056
      82b21c08
  3. Jul 09, 2010
  4. Jul 08, 2010
  5. Jul 06, 2010
  6. Jul 02, 2010
  7. Jun 30, 2010
  8. Jun 28, 2010
  9. Jun 27, 2010
  10. Jun 26, 2010
  11. Jun 25, 2010
  12. Jun 24, 2010
  13. Jun 23, 2010
  14. Jun 22, 2010
  15. Jun 21, 2010
  16. Jun 19, 2010
    • Dan Gohman's avatar
      Add a TODO comment. · 32655906
      Dan Gohman authored
      llvm-svn: 106397
      32655906
    • Dan Gohman's avatar
      Include the use kind along with the expression in the key of the · 51d00092
      Dan Gohman authored
      use sharing map. The reconcileNewOffset logic already forces a
      separate use if the kinds differ, so incorporating the kind in the
      key means we can track more sharing opportunities.
      
      More sharing means fewer total uses to track, which means smaller
      problem sizes, which means the conservative throttles don't kick
      in as often.
      
      llvm-svn: 106396
      51d00092
Loading