Skip to content
  1. Jun 02, 2012
    • Jakob Stoklund Olesen's avatar
      Switch all register list clients to the new MC*Iterator interface. · 54038d79
      Jakob Stoklund Olesen authored
      No functional change intended.
      
      Sorry for the churn. The iterator classes are supposed to help avoid
      giant commits like this one in the future. The TableGen-produced
      register lists are getting quite large, and it may be necessary to
      change the table representation.
      
      This makes it possible to do so without changing all clients (again).
      
      llvm-svn: 157854
      54038d79
  2. Mar 05, 2012
  3. Feb 10, 2012
    • Andrew Trick's avatar
      RegAlloc superpass: includes phi elimination, coalescing, and scheduling. · d3f8fe81
      Andrew Trick authored
      Creates a configurable regalloc pipeline.
      
      Ensure specific llc options do what they say and nothing more: -reglloc=... has no effect other than selecting the allocator pass itself. This patch introduces a new umbrella flag, "-optimize-regalloc", to enable/disable the optimizing regalloc "superpass". This allows for example testing coalscing and scheduling under -O0 or vice-versa.
      
      When a CodeGen pass requires the MachineFunction to have a particular property, we need to explicitly define that property so it can be directly queried rather than naming a specific Pass. For example, to check for SSA, use MRI->isSSA, not addRequired<PHIElimination>.
      
      CodeGen transformation passes are never "required" as an analysis
      
      ProcessImplicitDefs does not require LiveVariables.
      
      We have a plan to massively simplify some of the early passes within the regalloc superpass.
      
      llvm-svn: 150226
      d3f8fe81
  4. Jan 26, 2012
  5. Jul 28, 2011
    • Jakob Stoklund Olesen's avatar
      Handle REG_SEQUENCE with implicitly defined operands. · b16081ce
      Jakob Stoklund Olesen authored
      Code like that would only be produced by bugpoint, but we should still
      handle it correctly.
      
      When a register is defined by a REG_SEQUENCE of undefs, the register
      itself is undef. Previously, we would create a register with uses but no
      defs.
      
      Fixes part of PR10520.
      
      llvm-svn: 136401
      b16081ce
  6. Mar 14, 2011
  7. Dec 29, 2010
  8. Oct 12, 2010
  9. Oct 08, 2010
  10. Jul 22, 2010
  11. Jul 16, 2010
  12. Jul 14, 2010
  13. Jul 08, 2010
  14. Jul 07, 2010
  15. Jul 03, 2010
  16. May 11, 2010
  17. May 10, 2010
  18. Feb 15, 2010
    • Jakob Stoklund Olesen's avatar
      Fix PR6300. · 2988d573
      Jakob Stoklund Olesen authored
      A virtual register can be used before it is defined in the same MBB if the MBB
      is part of a loop. Teach the implicit-def pass about this case.
      
      llvm-svn: 96279
      2988d573
  19. Feb 09, 2010
  20. Feb 04, 2010
  21. Jan 05, 2010
  22. Nov 26, 2009
  23. Nov 25, 2009
  24. Nov 16, 2009
  25. Nov 04, 2009
    • Lang Hames's avatar
      The Indexes Patch. · 05fb9637
      Lang Hames authored
      This introduces a new pass, SlotIndexes, which is responsible for numbering
      instructions for register allocation (and other clients). SlotIndexes numbering
      is designed to match the existing scheme, so this patch should not cause any
      changes in the generated code.
      
      For consistency, and to avoid naming confusion, LiveIndex has been renamed
      SlotIndex.
      
      The processImplicitDefs method of the LiveIntervals analysis has been moved
      into its own pass so that it can be run prior to SlotIndexes. This was
      necessary to match the existing numbering scheme.
      
      llvm-svn: 85979
      05fb9637
Loading