Skip to content
  1. Jun 25, 2012
    • Jakob Stoklund Olesen's avatar
      Run ProcessImplicitDefs on SSA form where it can be much simpler. · eb495664
      Jakob Stoklund Olesen authored
      Implicitly defined virtual registers can simply have the <undef> bit set
      on all uses, and copies can be turned into implicit defs recursively.
      
      Physical registers are a bit trickier. We handle the common case where a
      physreg def is used by a nearby instruction in the same basic block. For
      more complicated cases, just leave the IMPLICIT_DEF instruction in.
      
      llvm-svn: 159149
      eb495664
  2. Jun 23, 2012
  3. 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
  4. Mar 05, 2012
  5. 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
  6. Jan 26, 2012
  7. 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
  8. Mar 14, 2011
  9. Dec 29, 2010
  10. Oct 12, 2010
  11. Oct 08, 2010
  12. Jul 22, 2010
  13. Jul 16, 2010
  14. Jul 14, 2010
  15. Jul 08, 2010
  16. Jul 07, 2010
  17. Jul 03, 2010
  18. May 11, 2010
  19. May 10, 2010
  20. 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
  21. Feb 09, 2010
  22. Feb 04, 2010
  23. Jan 05, 2010
  24. Nov 26, 2009
  25. Nov 25, 2009
  26. Nov 16, 2009
  27. 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