Skip to content
  1. Feb 05, 2010
    • Bob Wilson's avatar
      Do not reassociate expressions with i1 type. SimplifyCFG converts some · 27dfb1e1
      Bob Wilson authored
      short-circuited conditions to AND/OR expressions, and those expressions
      are often converted back to a short-circuited form in code gen.  The
      original source order may have been optimized to take advantage of the
      expected values, and if we reassociate them, we change the order and
      subvert that optimization.  Radar 7497329.
      
      llvm-svn: 95333
      27dfb1e1
  2. Feb 03, 2010
    • Bob Wilson's avatar
      Adjust the heuristics used to decide when SROA is likely to be profitable. · 04365c5f
      Bob Wilson authored
      The SRThreshold value makes perfect sense for checking if an entire aggregate
      should be promoted to a scalar integer, but it is not so good for splitting
      an aggregate into its separate elements.  A struct may contain a large embedded
      array along with some scalar fields that would benefit from being split apart
      by SROA.  Even if the total aggregate size is large, it may still be good to
      perform SROA.  Thus, the most important piece of this patch is simply moving
      the aggregate size comparison vs. SRThreshold so that it guards only the
      aggregate promotion.
      
      We have also been checking the number of elements to decide if an aggregate
      should be split up.  The limit of "SRThreshold/4" seemed rather arbitrary,
      and I don't think it's very useful to derive this limit from SRThreshold
      anyway.  I've collected some data showing that the current default limit of
      32 (since SRThreshold defaults to 128) is a reasonable cutoff for struct
      types.  One thing suggested by the data is that distinguishing between structs
      and arrays might be useful.  There are (obviously) a lot more large arrays
      than large structs (as measured by the number of elements and not the total
      size -- a large array inside a struct still counts as a single element given
      the way we do SROA right now).  Out of 8377 arrays where we successfully
      performed SROA while compiling a large set of benchmarks, only 16 of them had
      more than 8 elements.  And, for those 16 arrays, it's not at all clear that
      SROA was actually beneficial.  So, to offset the compile time cost of
      investigating more large structs for SROA, the patch lowers the limit on array
      elements to 8.
      
      This fixes Apple Radar 7563690.
      
      llvm-svn: 95224
      04365c5f
    • Evan Cheng's avatar
      Revert 94937 and move the noreturn check to codegen. · 27a41d54
      Evan Cheng authored
      llvm-svn: 95198
      27a41d54
    • Bob Wilson's avatar
      Fix some comment typos. · 76e8c595
      Bob Wilson authored
      llvm-svn: 95170
      76e8c595
    • Eric Christopher's avatar
      Recommit this, looks like it wasn't the cause. · d86233c1
      Eric Christopher authored
      llvm-svn: 95165
      d86233c1
    • Eric Christopher's avatar
      Hopefully temporarily revert this. · e67d01a9
      Eric Christopher authored
      llvm-svn: 95154
      e67d01a9
  3. Feb 02, 2010
  4. Feb 01, 2010
  5. Jan 31, 2010
  6. Jan 30, 2010
  7. Jan 29, 2010
  8. Jan 27, 2010
  9. Jan 25, 2010
  10. Jan 24, 2010
  11. Jan 23, 2010
  12. Jan 22, 2010
  13. Jan 21, 2010
  14. Jan 19, 2010
    • Dan Gohman's avatar
      When doing address-mode sinking, expand the base register first, rather · ca19445d
      Dan Gohman authored
      than the scaled register. This makes it more likely that subsequent
      AddrModeMatcher queries will match the new address the same way as the
      old, instead of accidentally matching what had been the base register
      as the new scaled register, and then failing to match the scaled register.
      This fixes some problems with address-mode sinking multiple muls into a
      block, which will be a lot more common with some upcoming
      LoopStrengthReduction changes.
      
      llvm-svn: 93935
      ca19445d
    • Bob Wilson's avatar
      Fix a crash in scalarrepl for memcpy/memmove where the source and destination · 58d59fe3
      Bob Wilson authored
      are the same.  I had already fixed a similar problem where the source and
      destination were different bitcasts derived from the same alloca, but the
      previous fix still did not handle the case where both operands are exactly
      the same value.  Radar 7552893.
      
      llvm-svn: 93848
      58d59fe3
Loading