Skip to content
  1. Nov 21, 2009
  2. Nov 13, 2009
    • Evan Cheng's avatar
      Fix PR5410: LiveVariables lost subreg def: · d190b821
      Evan Cheng authored
      D0<def,dead> = ...
      ...
                   = S0<use, kill>
      S0<def>      = ...
      ...
      D0<def>      = 
      
      The first D0 def is correctly marked dead, however, livevariables should have
      added an implicit def of S0 or we end up with a use without a def.
      
      llvm-svn: 88690
      d190b821
  3. 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
  4. Nov 10, 2009
  5. Oct 15, 2009
  6. Sep 24, 2009
  7. Sep 23, 2009
  8. Sep 22, 2009
  9. Aug 24, 2009
  10. Aug 23, 2009
  11. Jul 31, 2009
    • Dan Gohman's avatar
      Reapply r77654 with a fix: MachineFunctionPass's getAnalysisUsage · 5ea74d55
      Dan Gohman authored
      shouldn't do AU.setPreservesCFG(), because even though CodeGen passes
      don't modify the LLVM IR CFG, they may modify the MachineFunction CFG,
      and passes like MachineLoop are registered with isCFGOnly set to true.
      
      llvm-svn: 77691
      5ea74d55
    • Daniel Dunbar's avatar
      Revert r77654, it appears to be causing llvm-gcc bootstrap failures, and many · 54347565
      Daniel Dunbar authored
      failures when building assorted projects with clang.
      
      --- Reverse-merging r77654 into '.':
      U    include/llvm/CodeGen/Passes.h
      U    include/llvm/CodeGen/MachineFunctionPass.h
      U    include/llvm/CodeGen/MachineFunction.h
      U    include/llvm/CodeGen/LazyLiveness.h
      U    include/llvm/CodeGen/SelectionDAGISel.h
      D    include/llvm/CodeGen/MachineFunctionAnalysis.h
      U    include/llvm/Function.h
      U    lib/Target/CellSPU/SPUISelDAGToDAG.cpp
      U    lib/Target/PowerPC/PPCISelDAGToDAG.cpp
      U    lib/CodeGen/LLVMTargetMachine.cpp
      U    lib/CodeGen/MachineVerifier.cpp
      U    lib/CodeGen/MachineFunction.cpp
      U    lib/CodeGen/PrologEpilogInserter.cpp
      U    lib/CodeGen/MachineLoopInfo.cpp
      U    lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
      D    lib/CodeGen/MachineFunctionAnalysis.cpp
      D    lib/CodeGen/MachineFunctionPass.cpp
      U    lib/CodeGen/LiveVariables.cpp
      
      llvm-svn: 77661
      54347565
    • Dan Gohman's avatar
      Manage MachineFunctions with an analysis Pass instead of the Annotable · bcb44baa
      Dan Gohman authored
      mechanism. To support this, make MachineFunctionPass a little more
      complete.
      
      llvm-svn: 77654
      bcb44baa
  12. Jul 06, 2009
  13. Jun 20, 2009
  14. Jun 03, 2009
    • Evan Cheng's avatar
      If there is a def of a super-register followed by a use of a sub-register, do... · d29fc665
      Evan Cheng authored
      If there is a def of a super-register followed by a use of a sub-register, do *not* add an implicit def of the sub-register. e.g.
      EAX = ..., AX<imp-def>
      ...
          = AX
      
      This creates a double-def. Apparently this used to be necessary but is no longer needed.
      
      Thanks to Anton for pointing this out. Anton, I cannot create a test case without your uncommitted ARM patches. Please check in a test case for me.
      
      llvm-svn: 72755
      d29fc665
  15. May 26, 2009
  16. Jan 20, 2009
    • Evan Cheng's avatar
      Fix PR3243: a LiveVariables bug. When HandlePhysRegKill is checking whether... · f1e873a2
      Evan Cheng authored
      Fix PR3243: a LiveVariables bug. When HandlePhysRegKill is checking whether the last reference is also the last def (i.e. dead def), it should also check if last reference is the current machine instruction being processed. This can happen when it is processing a physical register use and setting the current machine instruction as sub-register's last ref.
      
      llvm-svn: 62617
      f1e873a2
  17. Nov 21, 2008
  18. Nov 13, 2008
  19. Oct 03, 2008
  20. Sep 21, 2008
  21. Aug 15, 2008
  22. Aug 05, 2008
    • Owen Anderson's avatar
      - Fix SelectionDAG to generate correct CFGs. · a102290b
      Owen Anderson authored
      - Add a basic machine-level dead block eliminator.
      
      These two have to go together, since many other parts of the code generator are unable to handle the unreachable blocks otherwise created.
      
      llvm-svn: 54333
      a102290b
  23. Jul 03, 2008
  24. Jun 27, 2008
  25. Jun 26, 2008
  26. Jun 24, 2008
    • Bill Wendling's avatar
      This situation can occur: · c44659b9
      Bill Wendling authored
          ,------.
          |      |
          |      v
          |   t2 = phi ... t1 ...
          |      |
          |      v
          |   t1 = ...
          |  ... = ... t1 ...
          |      |
          `------'
      
      where there is a use in a PHI node that's a predecessor to the defining
      block. We don't want to mark all predecessors as having the value "alive" in
      this case. Also, the assert was too restrictive and didn't handle this case.
      
      llvm-svn: 52655
      c44659b9
  27. Apr 16, 2008
    • Evan Cheng's avatar
      Rewrite LiveVariable liveness computation. The new implementation is much... · e45b8f89
      Evan Cheng authored
      Rewrite LiveVariable liveness computation. The new implementation is much simplified. It eliminated the nasty recursive routines and removed the partial def / use bookkeeping. There is also potential for performance improvement by replacing the conservative handling of partial physical register definitions. The code is currently disabled until live interval analysis is taught of the name scheme.
      
      This patch also fixed a couple of nasty corner cases.
      
      llvm-svn: 49784
      e45b8f89
  28. Apr 02, 2008
    • Evan Cheng's avatar
      Now that I am told MachineRegisterInfo also tracks physical register uses /... · d8616064
      Evan Cheng authored
      Now that I am told MachineRegisterInfo also tracks physical register uses / defs, I can do away with the horribleness I introduced a while back. It's impossible to detect if there is any use of a physical register below an instruction (and before any def of the register) with some cheap book keeping.
      
      llvm-svn: 49105
      d8616064
  29. Mar 19, 2008
    • Evan Cheng's avatar
      Fix live variables issues: · 44c0b4f7
      Evan Cheng authored
      1. If part of a register is re-defined, an implicit kill and an implicit def are added to denote read / mod / write. However, this should only be necessary if the register is actually read later. This is a performance issue.
      2. If a sub-register is being defined, and it doesn't have a previous use, do not add a implicit kill to the last use of a super-register:
         = EAX, AX<imp-use,kill>
      ...
      AX =
      In this case, EAX is live but AX is killed, this is wrong and will cause the coalescer to do bad things.
      
      llvm-svn: 48521
      44c0b4f7
  30. Mar 05, 2008
  31. Feb 21, 2008
  32. Feb 20, 2008
Loading