[llvm-dev] [LLVMdev] Improving the quality of debug locations / DbgValueHistoryCalculator

Adrian Prantl via llvm-dev llvm-dev at lists.llvm.org
Wed May 11 13:43:24 PDT 2016


> On May 11, 2016, at 1:12 PM, Francois Pichet <pichet2000 at gmail.com> wrote:
> 
> Hello,
> 
> Regarding the problem of debug range for optimized code. 
> Currently a DEBUG_VALUE will be inserted after the <def>vregX
> DEBUG_VALUE are only valid until the end of the current MachineBasicBlock. That's the main problem.
> Why not simply iterate over all uses of vregX and insert an DEBUG_VALUE in all the MachineBasicBlocks where vregX is used. (pre regalloc)
> 
> I prototyped a small pass to do that and at first it seems to improve .debug_loc range validity and enhance the debugging experience for optimized code.

The problem that I see with this approach is that DEBUG_VALUEs are only valid until the next DEBUG_VALUE that describes the same variable. How does your pass handle:

  BB0: 
    DEBUG_VALUE “x”, vreg0

  | | 
  | BB1:
  |  DEBUG_VALUE “x”, vreg1
  | |
  \_____BB2:
    |    |
    |____/
  BB2:
    vreg0 // still not clobbered here.

Does it insert a DEBUG_VALUE “x”, vreg0 into BB2?

-- adrian



More information about the llvm-dev mailing list