This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
PR target/24969
- From: Jan Hubicka <jh at suse dot cz>
- To: gcc-patches at gcc dot gnu dot org
- Date: Sat, 3 Dec 2005 13:31:43 +0100
- Subject: PR target/24969
Hi,
the problem is caused by classify_argument improperly computing offsets of
bitfields and as a result classifying the other half of structure as passed
nowhere.
Bootstrapped/regtested x86_64-linux.
I will commit it to 3.4/4.0/4.1/mainline if there will be no complains till
monday evening.
Honza
2005-12-02 Jan Hubicka <jh@suse.cz>
PR target/24969
* i386.c (classify_argument): Properly adjust offset of bitfield for
substructures.
Index: config/i386/i386.c
===================================================================
*** config/i386/i386.c (revision 107909)
--- config/i386/i386.c (working copy)
*************** classify_argument (enum machine_mode mod
*** 2652,2659 ****
misaligned integers. */
if (DECL_BIT_FIELD (field))
{
! for (i = int_bit_position (field) / 8 / 8;
! i < (int_bit_position (field)
+ tree_low_cst (DECL_SIZE (field), 0)
+ 63) / 8 / 8; i++)
classes[i] =
--- 2652,2659 ----
misaligned integers. */
if (DECL_BIT_FIELD (field))
{
! for (i = (int_bit_position (field) + (bit_offset % 64)) / 8 / 8;
! i < ((int_bit_position (field) + (bit_offset % 64))
+ tree_low_cst (DECL_SIZE (field), 0)
+ 63) / 8 / 8; i++)
classes[i] =