https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78839

            Bug ID: 78839
           Summary: DWARF output different between GCC 5 and 6
           Product: gcc
           Version: 6.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: other
          Assignee: unassigned at gcc dot gnu.org
          Reporter: toconnor at forcepoint dot com
  Target Milestone: ---

Created attachment 40353
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40353&action=edit
sample c code

I've observed a difference in DWARF output for the same input source code
between GCC 5 and GCC 6, specifically in the DW_AT_data_member_location values
for bitfield members of structs. For example,

s.c:
struct s {
  unsigned int shutdown:2,
    no_check_tx:1,
    no_check_rx:1,
    userlocks:4,
    protocol:8,
    type:16;
};

int main() {
  struct s s;
  return 0;
}


GCC 5 reports DW_AT_data_member_location for all the fields as 0, which is
expected.
GCC 6 reports DW_AT_data_member_location for the "type" and "protocol" fields
as 2 and 1 respectively, all other fields 0 as expected. The DW_AT_bt_offset
fields for "type" and "protocol" change as well.

According to a mailing list posting, this is related to this change: 
http://gcc.gnu.org/r231762

Reply via email to