Skip to content
  1. Feb 03, 2012
  2. Jan 21, 2012
    • Evan Cheng's avatar
      Fix an obvious typo. · 64a2beca
      Evan Cheng authored
      llvm-svn: 148622
      64a2beca
    • Jakob Stoklund Olesen's avatar
      Handle register masks in LiveVariables. · 8e3bb315
      Jakob Stoklund Olesen authored
      A register mask operand kills any live physreg that isn't preserved.
      Unlike an implicit-def operand, the clobbered physregs are never live
      afterwards.
      
      This means LiveVariables has to track a much smaller number of live
      physregs, and it should spend much less time in addRegisterDead().
      
      llvm-svn: 148609
      8e3bb315
  3. Jan 20, 2012
  4. Jan 14, 2012
    • Evan Cheng's avatar
      After r147827 and r147902, it's now possible for unallocatable registers to be · 6bb95253
      Evan Cheng authored
      live across BBs before register allocation. This miscompiled 197.parser
      when a cmp + b are optimized to a cbnz instruction even though the CPSR def
      is live-in a successor.
              cbnz    r6, LBB89_12
      ...
      LBB89_12:
              ble     LBB89_1
      
      The fix consists of two parts. 1) Teach LiveVariables that some unallocatable
      registers might be liveouts so don't mark their last use as kill if they are.
      2) ARM constantpool island pass shouldn't form cbz / cbnz if the conditional
      branch does not kill CPSR.
      
      rdar://10676853
      
      llvm-svn: 148168
      6bb95253
  5. Dec 07, 2011
    • Evan Cheng's avatar
      Add bundle aware API for querying instruction properties and switch the code · 7f8e563a
      Evan Cheng authored
      generator to it. For non-bundle instructions, these behave exactly the same
      as the MC layer API.
      
      For properties like mayLoad / mayStore, look into the bundle and if any of the
      bundled instructions has the property it would return true.
      For properties like isPredicable, only return true if *all* of the bundled
      instructions have the property.
      For properties like canFoldAsLoad, isCompare, conservatively return false for
      bundles.
      
      llvm-svn: 146026
      7f8e563a
  6. Dec 06, 2011
    • Evan Cheng's avatar
      First chunk of MachineInstr bundle support. · 2a81dd4a
      Evan Cheng authored
      1. Added opcode BUNDLE
      2. Taught MachineInstr class to deal with bundled MIs
      3. Changed MachineBasicBlock iterator to skip over bundled MIs; added an iterator to walk all the MIs
      4. Taught MachineBasicBlock methods about bundled MIs
      
      llvm-svn: 145975
      2a81dd4a
  7. Aug 12, 2011
  8. Mar 08, 2011
  9. Jan 09, 2011
  10. Oct 12, 2010
  11. Oct 08, 2010
  12. Aug 16, 2010
  13. Jul 22, 2010
  14. Jun 14, 2010
  15. Jun 05, 2010
  16. Apr 13, 2010
  17. Mar 26, 2010
  18. Mar 05, 2010
    • Jakob Stoklund Olesen's avatar
      Better handling of dead super registers in LiveVariables. We used to do this: · 2664d295
      Jakob Stoklund Olesen authored
         CALL ... %RAX<imp-def>
         ... [not using %RAX]
         %EAX = ..., %RAX<imp-use, kill>
         RET %EAX<imp-use,kill>
      
      Now we do this:
      
         CALL ... %RAX<imp-def, dead>
         ... [not using %RAX]
         %EAX = ...
         RET %EAX<imp-use,kill>
      
      By not artificially keeping %RAX alive, we lower register pressure a bit.
      
      The correct number of instructions for 2008-08-05-SpillerBug.ll is obviously
      55, anybody can see that. Sheesh.
      
      llvm-svn: 97838
      2664d295
  19. Feb 23, 2010
  20. Feb 09, 2010
  21. Jan 07, 2010
  22. Jan 05, 2010
    • David Greene's avatar
      · d599dcd7
      David Greene authored
      Change errs() to dbgs().
      
      llvm-svn: 92532
      d599dcd7
  23. Dec 01, 2009
  24. Nov 21, 2009
  25. 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
  26. 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
  27. Nov 10, 2009
  28. Oct 15, 2009
  29. Sep 24, 2009
  30. Sep 23, 2009
  31. Sep 22, 2009
  32. Aug 24, 2009
  33. Aug 23, 2009
  34. 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
  35. Jul 06, 2009
Loading