Skip to content
  1. May 23, 2013
  2. Feb 05, 2013
  3. Dec 03, 2012
    • Chandler Carruth's avatar
      Use the new script to sort the includes of every file under lib. · ed0881b2
      Chandler Carruth authored
      Sooooo many of these had incorrect or strange main module includes.
      I have manually inspected all of these, and fixed the main module
      include to be the nearest plausible thing I could find. If you own or
      care about any of these source files, I encourage you to take some time
      and check that these edits were sensible. I can't have broken anything
      (I strictly added headers, and reordered them, never removed), but they
      may not be the headers you'd really like to identify as containing the
      API being implemented.
      
      Many forward declarations and missing includes were added to a header
      files to allow them to parse cleanly when included first. The main
      module rule does in fact have its merits. =]
      
      llvm-svn: 169131
      ed0881b2
  4. Oct 15, 2012
  5. Sep 12, 2012
  6. Sep 09, 2012
    • Benjamin Kramer's avatar
      LiveVariables: Compute a set of defs and kills to speed up updating LV during... · 851c941b
      Benjamin Kramer authored
      LiveVariables: Compute a set of defs and kills to speed up updating LV during critical edge splitting.
      
      Previously we checked if the register is def'd in a block via the def/use list a
      nd walked the list of kills to check if the register is killed in a block. Both
      of these checks can be made much cheaper by walking the block first and
      recording all defs and kills.
      
      This reduces the compile time of the test case from PR13651 from 40s to 15s at
      -O2. The compile time is still dominated by LV updating but now the main culprit
      is SparseBitVector's slowness.
      
      llvm-svn: 163478
      851c941b
  7. Sep 06, 2012
  8. Jun 23, 2012
  9. 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
  10. Apr 01, 2012
  11. Mar 10, 2012
  12. Mar 05, 2012
  13. 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
  14. Feb 03, 2012
  15. 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
  16. Jan 20, 2012
  17. 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
  18. 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
  19. 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
  20. Aug 12, 2011
  21. Mar 08, 2011
  22. Jan 09, 2011
  23. Oct 12, 2010
  24. Oct 08, 2010
  25. Aug 16, 2010
  26. Jul 22, 2010
  27. Jun 14, 2010
  28. Jun 05, 2010
  29. Apr 13, 2010
  30. Mar 26, 2010
  31. 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
  32. Feb 23, 2010
  33. Feb 09, 2010
  34. Jan 07, 2010
  35. Jan 05, 2010
    • David Greene's avatar
      · d599dcd7
      David Greene authored
      Change errs() to dbgs().
      
      llvm-svn: 92532
      d599dcd7
  36. Dec 01, 2009
  37. Nov 21, 2009
Loading