This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/20371] Some corner cases of MS bitfields don't work
- From: "cvs-commit at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 4 May 2005 21:51:41 -0000
- Subject: [Bug middle-end/20371] Some corner cases of MS bitfields don't work
- References: <20050307215329.20371.amylaar@gcc.gnu.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From cvs-commit at gcc dot gnu dot org 2005-05-04 21:51 -------
Subject: Bug 20371
CVSROOT: /cvs/gcc
Module name: gcc
Branch: sh-elf-4_1-branch
Changes by: amylaar@gcc.gnu.org 2005-05-04 21:51:35
Modified files:
gcc : ChangeLog tree.h stor-layout.c
Log message:
PR middle-end/20371:
* tree.h (record_layout_info_s): New member prev_packed.
* stor-layout.c (update_alignment_for_field): Fix comment about
KNOWN_ALIGN. For MS bitfields, if we start a new run, make sure
we start it properly aligned.
(place_field): At the beginning of a record, pass 0 as KNOWN_ALIGN
to update_alignment_for_field, and recompute it afterwards using
the alignment of the record.
When a packed bitfield precedes an MS bitfield, don't add padding
at the end of the packed bitfield on behalf of the base type of
the packed bit field.
Take possible record alignment > BIGGEST_ALIGNMENT into account
when calculating actual_align.
Only put packed bit fields into rli->prev_field if they end up
suitably aligned.
Update rli->remaining_in_alignment when we have already started a
run of bit fields and we process a packed bit field.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=sh-elf-4_1-branch&r1=2.8142.2.8&r2=2.8142.2.9
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree.h.diff?cvsroot=gcc&only_with_tag=sh-elf-4_1-branch&r1=1.709&r2=1.709.2.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/stor-layout.c.diff?cvsroot=gcc&only_with_tag=sh-elf-4_1-branch&r1=1.228.2.1&r2=1.228.2.2
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20371