Skip to content
  1. Oct 08, 2013
  2. Oct 05, 2013
    • Benjamin Kramer's avatar
      Emit a better error when running out of registers on inline asm. · 7200a46c
      Benjamin Kramer authored
      The most likely case where this error happens is when the user specifies
      too many register operands. Don't make it look like an internal LLVM bug
      when we can see that the error is coming from an inline asm instruction.
      For other instructions we keep the "ran out of registers" error.
      
      llvm-svn: 192041
      7200a46c
  3. Sep 17, 2013
  4. Jul 14, 2013
  5. Jul 10, 2013
  6. Jul 09, 2013
    • Adrian Prantl's avatar
      Reapply an improved version of r180816/180817. · 418d1d1e
      Adrian Prantl authored
      Change the informal convention of DBG_VALUE machine instructions so that
      we can express a register-indirect address with an offset of 0.
      The old convention was that a DBG_VALUE is a register-indirect value if
      the offset (operand 1) is nonzero. The new convention is that a DBG_VALUE
      is register-indirect if the first operand is a register and the second
      operand is an immediate. For plain register values the combination reg,
      reg is used. MachineInstrBuilder::BuildMI knows how to build the new
      DBG_VALUES.
      
      rdar://problem/13658587
      
      llvm-svn: 185966
      418d1d1e
  7. Jun 16, 2013
    • David Blaikie's avatar
      Debug Info: Simplify Frame Index handling in DBG_VALUE Machine Instructions · 0252265b
      David Blaikie authored
      Rather than using the full power of target-specific addressing modes in
      DBG_VALUEs with Frame Indicies, simply use Frame Index + Offset. This
      reduces the complexity of debug info handling down to two
      representations of values (reg+offset and frame index+offset) rather
      than three or four.
      
      Ideally we could ensure that frame indicies had been eliminated by the
      time we reached an assembly or dwarf generation, but I haven't spent the
      time to figure out where the FIs are leaking through into that & whether
      there's a good place to convert them. Some FI+offset=>reg+offset
      conversion is done (see PrologEpilogInserter, for example) which is
      necessary for some SelectionDAG assumptions about registers, I believe,
      but it might be possible to make this a more thorough conversion &
      ensure there are no remaining FIs no matter how instruction selection
      is performed.
      
      llvm-svn: 184066
      0252265b
  8. Feb 21, 2013
  9. Feb 05, 2013
  10. Jan 02, 2013
    • Chandler Carruth's avatar
      Move all of the header files which are involved in modelling the LLVM IR · 9fb823bb
      Chandler Carruth authored
      into their new header subdirectory: include/llvm/IR. This matches the
      directory structure of lib, and begins to correct a long standing point
      of file layout clutter in LLVM.
      
      There are still more header files to move here, but I wanted to handle
      them in separate commits to make tracking what files make sense at each
      layer easier.
      
      The only really questionable files here are the target intrinsic
      tablegen files. But that's a battle I'd rather not fight today.
      
      I've updated both CMake and Makefile build systems (I think, and my
      tests think, but I may have missed something).
      
      I've also re-sorted the includes throughout the project. I'll be
      committing updates to Clang, DragonEgg, and Polly momentarily.
      
      llvm-svn: 171366
      9fb823bb
  11. Dec 20, 2012
  12. 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
  13. Nov 29, 2012
  14. Nov 28, 2012
  15. Nov 27, 2012
  16. Nov 06, 2012
  17. Oct 31, 2012
  18. Oct 17, 2012
  19. Oct 16, 2012
  20. Aug 22, 2012
  21. Aug 09, 2012
  22. Jun 06, 2012
  23. Jun 02, 2012
  24. May 14, 2012
  25. Apr 20, 2012
    • Andrew Trick's avatar
      SparseSet: Add support for key-derived indexes and arbitrary key types. · 1eb4a0da
      Andrew Trick authored
      This nicely handles the most common case of virtual register sets, but
      also handles anticipated cases where we will map pointers to IDs.
      
      The goal is not to develop a completely generic SparseSet
      template. Instead we want to handle the expected uses within llvm
      without any template antics in the client code. I'm adding a bit of
      template nastiness here, and some assumption about expected usage in
      order to make the client code very clean.
      
      The expected common uses cases I'm designing for:
      - integer keys that need to be reindexed, and may map to additional
        data
      - densely numbered objects where we want pointer keys because no
        number->object map exists.
      
      llvm-svn: 155227
      1eb4a0da
  26. Mar 08, 2012
  27. Mar 04, 2012
  28. Feb 22, 2012
  29. Feb 21, 2012
    • Andrew Trick's avatar
      Clear virtual registers after they are no longer referenced. · da84e646
      Andrew Trick authored
      Passes after RegAlloc should be able to rely on MRI->getNumVirtRegs() == 0.
      This makes sharing code for pre/postRA passes more robust.
      Now, to check if a pass is running before the RA pipeline begins, use MRI->isSSA().
      To check if a pass is running after the RA pipeline ends, use !MRI->getNumVirtRegs().
      
      PEI resets virtual regs when it's done scavenging.
      
      PTX will either have to provide its own PEI pass or assign physregs.
      
      llvm-svn: 151032
      da84e646
  30. Feb 17, 2012
    • Jakob Stoklund Olesen's avatar
      Transfer regmasks to MRI. · a0cf42f2
      Jakob Stoklund Olesen authored
      MRI keeps track of which physregs have been used. Make sure it gets
      updated with all the regmask-clobbered registers.
      
      Delete the closePhysRegsUsed() function which isn't necessary.
      
      llvm-svn: 150830
      a0cf42f2
  31. 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
  32. Jan 31, 2012
  33. Jan 05, 2012
    • Jakob Stoklund Olesen's avatar
      Freeze reserved registers before starting register allocation. · d19d3cab
      Jakob Stoklund Olesen authored
      The register allocators don't currently support adding reserved
      registers while they are running.  Extend the MRI API to keep track of
      the set of reserved registers when register allocation started.
      
      Target hooks like hasFP() and needsStackRealignment() can look at this
      set to avoid reserving more registers during register allocation.
      
      llvm-svn: 147577
      d19d3cab
  34. 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
  35. Nov 22, 2011
  36. Nov 15, 2011
Loading