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

Reply via email to