On Fri, 2005-07-01 at 11:50 +0200, Jakub Jelinek wrote: > On Thu, Jun 30, 2005 at 09:25:47PM -0400, DJ Delorie wrote: > > > > My m32c port is generating tracking notes that look like this: > > > > (var_location 0x2a95758dd0 (parallel [ > > (expr_list:REG_DEP_TRUE (reg/v:SI 0 r0 [orig:123 remainder_size > > ] [123]) > > (const_int 0 [0x0])) > > (expr_list:REG_DEP_TRUE (reg:HI 1 r2 [ remainder_size+2 ]) > > (const_int 2 [0x2])) > > ])) > > > > Note that registers are HI natively, and r2 is the upper half of the > > [r2:r0] pair. In other words, the location given above describes an > > overlap between the two pieces. The code itself refers to the > > variable in both SI (full) and HI (part) modes. > > > > The dwarf2 location lists generated from this are bogus. > > Even on mainline? See PR debug/21946 and > http://gcc.gnu.org/ml/gcc-patches/2005-06/msg00312.html. > Var-tracking is very broken in that it doesn't care about register modes, > but what I have comitted should at least prevent bogus dwarf2 location > list generation.
It's not so much broken as "much more inaccurate than it could be". :) Remember that we are just trying to divine what has happened in the optimizations using a simple dataflow equation. Sometimes you get the right answers, sometimes you don't.