Skip to content
  1. Nov 23, 2011
  2. Nov 22, 2011
  3. Nov 21, 2011
  4. Nov 20, 2011
  5. Nov 19, 2011
    • Craig Topper's avatar
      a3a65836
    • Craig Topper's avatar
      Remove some of the special classes that worked around an old tablegen... · bac86038
      Craig Topper authored
      Remove some of the special classes that worked around an old tablegen limitation of not being able to remove redundant bitconverts from patterns.
      
      llvm-svn: 145003
      bac86038
    • Craig Topper's avatar
    • 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
Loading