Skip to content
  1. Nov 27, 2011
  2. Nov 26, 2011
  3. Nov 25, 2011
  4. Nov 24, 2011
    • Craig Topper's avatar
      Remove 256-bit specific node types for UNPCKHPS/D and instead use the 128-bit... · d65a4444
      Craig Topper authored
      Remove 256-bit specific node types for UNPCKHPS/D and instead use the 128-bit versions and let the operand type disinquish. Also fix the load form of the v8i32 patterns for these to realize that the load would be promoted to v4i64.
      
      llvm-svn: 145126
      d65a4444
    • Benjamin Kramer's avatar
      X86: alias cqo to cqto. · 651db373
      Benjamin Kramer authored
      llvm-svn: 145121
      651db373
    • Chandler Carruth's avatar
      Fix a silly use-after-free issue. A much earlier version of this code · 7adee1a0
      Chandler Carruth authored
      need lots of fanciness around retaining a reference to a Chain's slot in
      the BlockToChain map, but that's all gone now. We can just go directly
      to allocating the new chain (which will update the mapping for us) and
      using it.
      
      Somewhat gross mechanically generated test case replicates the issue
      Duncan spotted when actually testing this out.
      
      llvm-svn: 145120
      7adee1a0
    • Chandler Carruth's avatar
      When adding blocks to the list of those which no longer have any CFG · d394bafd
      Chandler Carruth authored
      conflicts, we should only be adding the first block of the chain to the
      list, lest we try to merge into the middle of that chain. Most of the
      places we were doing this we already happened to be looking at the first
      block, but there is no reason to assume that, and in some cases it was
      clearly wrong.
      
      I've added a couple of tests here. One already worked, but I like having
      an explicit test for it. The other is reduced from a test case Duncan
      reduced for me and used to crash. Now it is handled correctly.
      
      llvm-svn: 145119
      d394bafd
  5. Nov 23, 2011
  6. Nov 22, 2011
    • Hal Finkel's avatar
      add basic PPC register-pressure feedback; adjust the vaarg test to match the... · 6f0ae783
      Hal Finkel authored
      add basic PPC register-pressure feedback; adjust the vaarg test to match the new register-allocation pattern
      
      llvm-svn: 145065
      6f0ae783
    • Chandler Carruth's avatar
      Fix a devilish miscompile exposed by block placement. The · ee54feb6
      Chandler Carruth authored
      updateTerminator code didn't correctly handle EH terminators in one very
      specific case. AnalyzeBranch would find no terminator instruction, and
      so the fallback in updateTerminator is to assume fallthrough. This is
      correct, but the destination of the fallthrough was assumed to be the
      first successor.
      
      This is *almost always* true, but in certain cases the loop
      transformations will cause the landing pad to be the first successor!
      Instead of this brittle logic, actually look through the successors for
      a non-landing-pad accessor, and to assert if more than one is found.
      
      This will hopefully fix some (if not all) of the self host miscompiles
      with block placement. Thanks to Benjamin Kramer for reporting, Nick
      Lewycky for an initial stab at a reduction, and Duncan for endless
      advice on EH (which I know nothing about) as well as reviewing the
      actual fix.
      
      llvm-svn: 145062
      ee54feb6
    • Rafael Espindola's avatar
      Add triple to the test. · c55e1af1
      Rafael Espindola authored
      llvm-svn: 145057
      c55e1af1
    • Rafael Espindola's avatar
      If a register is both an early clobber and part of a tied use, handle the use · 2021f382
      Rafael Espindola authored
      before the clobber so that we copy the value if needed.
      
      Fixes pr11415.
      
      llvm-svn: 145056
      2021f382
  7. Nov 21, 2011
  8. Nov 20, 2011
  9. Nov 19, 2011
    • Craig Topper's avatar
      a3a65836
    • Chandler Carruth's avatar
      Move the handling of unanalyzable branches out of the loop-driven chain · f3dc9eff
      Chandler Carruth authored
      formation phase and into the initial walk of the basic blocks. We
      essentially pre-merge all blocks where unanalyzable fallthrough exists,
      as we won't be able to update the terminators effectively after any
      reorderings. This is quite a bit more principled as there may be CFGs
      where the second half of the unanalyzable pair has some analyzable
      predecessor that gets placed first. Then it may get placed next,
      implicitly breaking the unanalyzable branch even though we never even
      looked at the part that isn't analyzable. I've included a test case that
      triggers this (thanks Benjamin yet again!), and I'm hoping to synthesize
      some more general ones as I dig into related issues.
      
      Also, to make this new scheme work we have to be able to handle branches
      into the middle of a chain, so add this check. We always fallback on the
      incoming ordering.
      
      Finally, this starts to really underscore a known limitation of the
      current implementation -- we don't consider broken predecessors when
      merging successors. This can caused major missed opportunities, and is
      something I'm planning on looking at next (modulo more bug reports).
      
      llvm-svn: 144994
      f3dc9eff
    • Craig Topper's avatar
      Test cases for SSSE3/AVX integer horizontal add/sub. · 6d77f4ae
      Craig Topper authored
      llvm-svn: 144990
      6d77f4ae
Loading