Skip to content
  1. 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
  2. May 01, 2013
  3. Feb 13, 2013
  4. 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
  5. 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
  6. Nov 28, 2012
    • Jakob Stoklund Olesen's avatar
      Make the LiveRegMatrix analysis available to targets. · 26c9d70d
      Jakob Stoklund Olesen authored
      No functional change, just moved header files.
      
      Targets can inject custom passes between register allocation and
      rewriting. This makes it possible to tweak the register allocation
      before rewriting, using the full global interference checking available
      from LiveRegMatrix.
      
      llvm-svn: 168806
      26c9d70d
  7. Aug 22, 2012
  8. Jun 28, 2012
  9. Jun 22, 2012
  10. May 16, 2012
  11. Mar 15, 2012
  12. 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
  13. Nov 13, 2011
    • Jakob Stoklund Olesen's avatar
      Rename SlotIndexes to match how they are used. · 90b5e565
      Jakob Stoklund Olesen authored
      The old naming scheme (load/use/def/store) can be traced back to an old
      linear scan article, but the names don't match how slots are actually
      used.
      
      The load and store slots are not needed after the deferred spill code
      insertion framework was deleted.
      
      The use and def slots don't make any sense because we are using
      half-open intervals as is customary in C code, but the names suggest
      closed intervals.  In reality, these slots were used to distinguish
      early-clobber defs from normal defs.
      
      The new naming scheme also has 4 slots, but the names match how the
      slots are really used.  This is a purely mechanical renaming, but some
      of the code makes a lot more sense now.
      
      llvm-svn: 144503
      90b5e565
    • Jakob Stoklund Olesen's avatar
      Stop tracking spill slot uses in VirtRegMap. · 28df7ef8
      Jakob Stoklund Olesen authored
      Nobody cared, StackSlotColoring scans the instructions to find used stack
      slots.
      
      llvm-svn: 144485
      28df7ef8
  14. Sep 16, 2011
  15. Sep 13, 2011
  16. Aug 10, 2011
  17. Aug 09, 2011
  18. Aug 04, 2011
  19. Jul 07, 2011
  20. May 08, 2011
    • Jakob Stoklund Olesen's avatar
      Remove an assertion to fix PR9872. · 89bd2ae5
      Jakob Stoklund Olesen authored
      It can happen that a live debug variable is the last use of a sub-register, and
      the register allocator will pick a larger register class for the virtual
      register.  If the allocated register doesn't support the sub-register index,
      just use %noreg for the debug variables instead of asserting.
      
      In PR9872, a debug variable ends up in the sub_8bit_hi part of a GR32_ABCD
      register. The register is split and one part is inflated to GR32 and assigned
      %ESI because there are no more normal uses of sub_8bit_hi.
      
      Since %ESI doesn't have that sub-register, substPhysReg asserted. Now it will
      simply insert a %noreg instead, and the debug variable will be marked
      unavailable in that range.
      
      We don't currently have a way of saying: !"value" is in bits 8-15 of %ESI, I
      don't know if DWARF even supports that.
      
      llvm-svn: 131073
      89bd2ae5
  21. May 06, 2011
  22. Apr 15, 2011
  23. Mar 22, 2011
    • Jakob Stoklund Olesen's avatar
      Reapply r128045 and r128051 with fixes. · ec0ac3ca
      Jakob Stoklund Olesen authored
      This will extend the ranges of debug info variables in registers until they are
      clobbered.
      
      Fix 1: Don't mistake DBG_VALUE instructions referring to incoming arguments on
      the stack with DBG_VALUE instructions referring to variables in the frame
      pointer. This fixes the gdb test-suite failure.
      
      Fix 2: Don't trace through copies to physical registers setting up call
      arguments. These registers are call clobbered, and the source register is more
      likely to be a callee-saved register that can be extended through the call
      instruction.
      
      llvm-svn: 128114
      ec0ac3ca
    • Andrew Trick's avatar
      Revert r128045 and r128051, debug info enhancements. · b0f98bb5
      Andrew Trick authored
      Temporarily reverting these to see if we can get llvm-objdump to link. Hopefully this is not the problem.
      
      llvm-svn: 128097
      b0f98bb5
    • Jakob Stoklund Olesen's avatar
      Dont emit 'DBG_VALUE %noreg, ...' to terminate user variable ranges. · 9c057ee4
      Jakob Stoklund Olesen authored
      These ranges get completely jumbled by the post-ra scheduler, and it is not
      really reasonable to expect it to make sense of them.
      
      Instead, teach DwarfDebug to notice when user variables in registers are
      clobbered, and terminate the ranges there.
      
      llvm-svn: 128045
      9c057ee4
  24. Mar 18, 2011
    • Jakob Stoklund Olesen's avatar
      Extend live debug values down the dominator tree by following copies. · 816f5f4c
      Jakob Stoklund Olesen authored
      The llvm.dbg.value intrinsic refers to SSA values, not virtual registers, so we
      should be able to extend the range of a value by tracking that value through
      register copies. This greatly improves the debug value tracking for function
      arguments that for some reason are copied to a second virtual register at the
      end of the entry block.
      
      We only extend the debug value range where its register is killed. All original
      llvm.dbg.value locations are still respected.
      
      Copies from physical registers are ignored. That should not be a problem since
      the entry block already adds DBG_VALUE instructions for the virtual registers
      holding the function arguments.
      
      llvm-svn: 127912
      816f5f4c
  25. Feb 04, 2011
    • Devang Patel's avatar
      DebugLoc associated with a machine instruction is used to emit location... · 26ffa018
      Devang Patel authored
      DebugLoc associated with a machine instruction is used to emit location entries. DebugLoc associated with a DBG_VALUE is used to identify lexical scope of the variable. After register allocation, while inserting DBG_VALUE remember original debug location for the first instruction and reuse it, otherwise dwarf writer may be mislead in identifying the variable's scope.
      
      llvm-svn: 124845
      26ffa018
  26. Jan 14, 2011
  27. Jan 13, 2011
Loading