Skip to content
  1. Aug 17, 2010
  2. Aug 06, 2010
  3. May 05, 2010
  4. May 04, 2010
    • Evan Cheng's avatar
      Teach PHI elimination to remove REG_SEQUENCE instructions and update... · 4c908f41
      Evan Cheng authored
      Teach PHI elimination to remove REG_SEQUENCE instructions and update references of the source operands with references of the destination with subreg indices. e.g.
      %reg1029<def>, %reg1030<def> = VLD1q16 %reg1024<kill>, ...
      %reg1031<def> = REG_SEQUENCE %reg1029<kill>, 5, %reg1030<kill>, 6
      =>
      %reg1031:5<def>, %reg1031:6<def> = VLD1q16 %reg1024<kill>, ...
      
      PHI elimination now does more than phi elimination. It is really a de-SSA pass.
      
      llvm-svn: 103039
      4c908f41
  5. Mar 04, 2010
  6. Feb 23, 2010
  7. Feb 17, 2010
  8. Feb 16, 2010
  9. Feb 09, 2010
  10. Dec 16, 2009
    • Jakob Stoklund Olesen's avatar
      Reuse lowered phi nodes. · ec20a88a
      Jakob Stoklund Olesen authored
      Tail duplication produces lots of identical phi nodes in different basic
      blocks. Teach PHIElimination to reuse the join registers when lowering a phi
      node that is identical to an already lowered node. This saves virtual
      registers, and more importantly it avoids creating copies the the coalescer
      doesn't know how to eliminate.
      
      Teach LiveIntervalAnalysis about the phi joins with multiple uses.
      
      This patch significantly reduces code size produced by -pre-regalloc-taildup.
      
      llvm-svn: 91549
      ec20a88a
  11. Dec 01, 2009
  12. Nov 21, 2009
  13. Nov 18, 2009
    • Jakob Stoklund Olesen's avatar
      Don't require LiveVariables for PHIElimination. Enable critical edge splitting · 736888f7
      Jakob Stoklund Olesen authored
      when LiveVariables is available.
      
      The -split-phi-edges is now gone, and so is the hack to disable it when using
      the local register allocator. The PHIElimination pass no longer has
      LiveVariables as a prerequisite - that is what broke the local allocator.
      Instead we do critical edge splitting when possible - that is when
      LiveVariables is available.
      
      llvm-svn: 89213
      736888f7
  14. Nov 13, 2009
    • Jakob Stoklund Olesen's avatar
      Fix PHIElimination optimization that uses MBB->getBasicBlock. · ad205d61
      Jakob Stoklund Olesen authored
      The BasicBlock associated with a MachineBasicBlock does not necessarily
      correspond to the code in the MBB.
      
      Don't insert a new IR BasicBlock when splitting critical edges. We are not
      supposed to modify the IR during codegen, and we should be able to do just
      fine with a NULL BB.
      
      llvm-svn: 88707
      ad205d61
  15. Nov 11, 2009
    • Jakob Stoklund Olesen's avatar
      Fix liveness calculation when splitting critical edges during PHI elimination. · 4f7fd3ba
      Jakob Stoklund Olesen authored
      - Edges are split before any phis are eliminated, so the code is SSA.
      
      - Create a proper IR BasicBlock for the split edges.
      
      - LiveVariables::addNewBlock now has same syntax as
        MachineDominatorTree::addNewBlock. Algorithm calculates predecessor live-out
        set rather than successor live-in set.
      
      This feature still causes some miscompilations.
      
      llvm-svn: 86867
      4f7fd3ba
  16. Nov 10, 2009
  17. Sep 04, 2009
  18. Jul 23, 2009
  19. Jul 22, 2009
Loading