track_expr_p has: 4496 /* If this expression is really a debug alias of some other declaration, we 4497 don't need to track this expression if the ultimate declaration is 4498 ignored. */ 4499 realdecl = expr; 4500 if (DECL_DEBUG_EXPR_IS_FROM (realdecl) && DECL_DEBUG_EXPR (realdecl)) 4501 { 4502 realdecl = DECL_DEBUG_EXPR (realdecl); 4503 /* ??? We don't yet know how to emit DW_OP_piece for variable 4504 that has been SRA'ed. */ 4505 if (!DECL_P (realdecl)) 4506 return 0; 4507 }
I'd say if the DECL_DEBUG_EXPR is a COMPONENT_REF, ARRAY_REF etc. from a reasonably short type, the easiest thing would be just to let var-tracking track the individual vars and let dwarf2out_var_location assemble them together. -- Summary: var-tracking needlessly throws away location info for SRAed vars Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jakub at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43983