From: Eric Botcazou Date: Mon, 16 Aug 2021 13:26:22 +0000 (+0200) Subject: Fix regression in debug info for Ada with DWARF 5 X-Git-Tag: releases/gcc-11.3.0~1022 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0c0c320a6e6195e68a4e0e44378ccde3be2d998b;p=thirdparty%2Fgcc.git Fix regression in debug info for Ada with DWARF 5 add_scalar_info can directly generate a reference to an existing DIE for a scalar attribute, e.g the upper bound of a VLA, but it does so only if this existing DIE has a location or is a constant: if (get_AT (decl_die, DW_AT_location) || get_AT (decl_die, DW_AT_data_member_location) || get_AT (decl_die, DW_AT_const_value)) Now, in DWARF 5, members of a structure that are bitfields no longer have a DW_AT_data_member_location but a DW_AT_data_bit_offset attribute instead, so the condition is bypassed. gcc/ * dwarf2out.c (add_scalar_info): Deal with DW_AT_data_bit_offset. --- diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 7606371296ee..54c6c326d49e 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -21054,6 +21054,7 @@ add_scalar_info (dw_die_ref die, enum dwarf_attribute attr, tree value, { if (get_AT (decl_die, DW_AT_location) || get_AT (decl_die, DW_AT_data_member_location) + || get_AT (decl_die, DW_AT_data_bit_offset) || get_AT (decl_die, DW_AT_const_value)) { add_AT_die_ref (die, attr, decl_die);