Skip to content
  1. Sep 28, 2010
  2. Sep 27, 2010
  3. Sep 25, 2010
    • Owen Anderson's avatar
      LoadPRE was not properly checking that the load it was PRE'ing post-dominated... · b590a927
      Owen Anderson authored
      LoadPRE was not properly checking that the load it was PRE'ing post-dominated the block it was being hoisted to.
      Splitting critical edges at the merge point only addressed part of the issue; it is also possible for non-post-domination
      to occur when the path from the load to the merge has branches in it.  Unfortunately, full anticipation analysis is
      time-consuming, so for now approximate it.  This is strictly more conservative than real anticipation, so we will miss
      some cases that real PRE would allow, but we also no longer insert loads into paths where they didn't exist before. :-)
      
      This is a very slight net positive on SPEC for me (0.5% on average).  Most of the benchmarks are largely unaffected, but
      when it pays off it pays off decently: 181.mcf improves by 4.5% on my machine.
      
      llvm-svn: 114785
      b590a927
    • Eric Christopher's avatar
      If we're changing the source of a memcpy we need to use the alignment · ebacd2b0
      Eric Christopher authored
      of the source, not the original alignment since it may no longer
      be valid.
      
      Fixes rdar://8400094
      
      llvm-svn: 114781
      ebacd2b0
  4. Sep 24, 2010
  5. Sep 23, 2010
  6. Sep 22, 2010
  7. Sep 21, 2010
  8. Sep 18, 2010
  9. Sep 16, 2010
  10. Sep 15, 2010
  11. Sep 14, 2010
  12. Sep 13, 2010
  13. Sep 12, 2010
  14. Sep 11, 2010
    • Owen Anderson's avatar
      Invert and-of-or into or-of-and when doing so would allow us to clear bits of the and's mask. · 70f45244
      Owen Anderson authored
      This can result in increased opportunities for store narrowing in code generation.  Update a number of
      tests for this change.  This fixes <rdar://problem/8285027>.
      
      Additionally, because this inverts the order of ors and ands, some patterns for optimizing or-of-and-of-or
      no longer fire in instances where they did originally.  Add a simple transform which recaptures most of these
      opportunities: if we have an or-of-constant-or and have failed to fold away the inner or, commute the order 
      of the two ors, to give the non-constant or a chance for simplification instead.
      
      llvm-svn: 113679
      70f45244
    • Gabor Greif's avatar
      typoes · 2f5f696b
      Gabor Greif authored
      llvm-svn: 113647
      2f5f696b
  15. Sep 10, 2010
  16. Sep 09, 2010
  17. Sep 08, 2010
  18. Sep 07, 2010
  19. Sep 06, 2010
    • Chris Lattner's avatar
      fix PR8067, an over-aggressive assertion in LICM. · be901909
      Chris Lattner authored
      llvm-svn: 113146
      be901909
    • Chris Lattner's avatar
      Teach loop rotate to hoist trivially invariant instructions · b01c24a9
      Chris Lattner authored
      in the duplicated block instead of duplicating them.  
      
      Duplicating them into the end of the loop and the preheader 
      means that we got a phi node in the header of the loop, 
      which prevented LICM from hoisting them.  GVN would
      usually come around later and merge the duplicated 
      instructions so we'd get reasonable output... except that
      anything dependent on the shoulda-been-hoisted value can't
      be hoisted.  In PR5319 (which this fixes), a memory value
      didn't get promoted.
      
      llvm-svn: 113134
      b01c24a9
Loading