Skip to content
  1. 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
  2. May 06, 2011
  3. Apr 15, 2011
  4. 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
  5. 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
  6. 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
  7. Jan 14, 2011
  8. Jan 13, 2011
  9. Jan 12, 2011
  10. Jan 11, 2011
  11. Jan 10, 2011
  12. Jan 09, 2011
  13. Jan 07, 2011
  14. Dec 03, 2010
  15. Dec 02, 2010
    • Jakob Stoklund Olesen's avatar
      Update LiveDebugVariables during coalescing. · 9ec20111
      Jakob Stoklund Olesen authored
      llvm-svn: 120720
      9ec20111
    • Jakob Stoklund Olesen's avatar
      Implement the first half of LiveDebugVariables. · 4be0bd79
      Jakob Stoklund Olesen authored
      Scan the MachineFunction for DBG_VALUE instructions, and replace them with a
      data structure similar to LiveIntervals. The live range of a DBG_VALUE is
      determined by propagating it down the dominator tree until a new DBG_VALUE is
      found. When a DBG_VALUE lives in a register, its live range is confined to the
      live range of the register's value.
      
      LiveDebugVariables runs before coalescing, so DBG_VALUEs are not artificially
      extended when registers are joined.
      
      The missing half will recreate DBG_VALUE instructions from the intervals when
      register allocation is complete.
      
      The pass is disabled by default. It can be enabled with the temporary command
      line option -live-debug-variables.
      
      llvm-svn: 120636
      4be0bd79
  16. Nov 30, 2010
    • Jakob Stoklund Olesen's avatar
      Stub out a new LiveDebugVariables pass. · d4900a64
      Jakob Stoklund Olesen authored
      This analysis is going to run immediately after LiveIntervals. It will stay
      alive during register allocation and keep track of user variables mentioned in
      DBG_VALUE instructions.
      
      When the register allocator is moving values between registers and the stack, it
      is very hard to keep track of DBG_VALUE instructions. We usually get it wrong.
      This analysis maintains a data structure that makes it easy to update DBG_VALUE
      instructions.
      
      llvm-svn: 120385
      d4900a64
Loading