> Patch updated. BTW, do you think this patch should actually go into trunk?

This is OK for google branches. I don't think it can go into trunk
like this, as it relies on get_discriminator_from_locus. In trunk, we
only have the discriminator assigned to a basic block.

-cary


> Index: include/dwarf2.def
> ===================================================================
> --- include/dwarf2.def (revision 201852)
> +++ include/dwarf2.def (working copy)
> @@ -390,6 +390,8 @@ DW_AT (DW_AT_GNU_ranges_base, 0x2132)
>  DW_AT (DW_AT_GNU_addr_base, 0x2133)
>  DW_AT (DW_AT_GNU_pubnames, 0x2134)
>  DW_AT (DW_AT_GNU_pubtypes, 0x2135)
> +/* Attribute for discriminator.  */
> +DW_AT (DW_AT_GNU_discriminator, 0x2136)
>  /* VMS extensions.  */
>  DW_AT (DW_AT_VMS_rtnbeg_pd_address, 0x2201)
>  /* GNAT extensions.  */
> Index: gcc/dwarf2out.c
> ===================================================================
> --- gcc/dwarf2out.c (revision 201852)
> +++ gcc/dwarf2out.c (working copy)
> @@ -18815,12 +18815,16 @@ gen_label_die (tree decl, dw_die_ref context_die)
>  static inline void
>  add_call_src_coords_attributes (tree stmt, dw_die_ref die)
>  {
> -  expanded_location s = expand_location (BLOCK_SOURCE_LOCATION (stmt));
> +  location_t locus = BLOCK_SOURCE_LOCATION (stmt);
> +  expanded_location s = expand_location (locus);
>
>    if (dwarf_version >= 3 || !dwarf_strict)
>      {
>        add_AT_file (die, DW_AT_call_file, lookup_filename (s.file));
>        add_AT_unsigned (die, DW_AT_call_line, s.line);
> +      unsigned discr = get_discriminator_from_locus (locus);
> +      if (discr != 0)
> + add_AT_unsigned (die, DW_AT_GNU_discriminator, discr);
>      }
>  }
>

Reply via email to