This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH, i386]: Revert "Align DImode to 32 bits" patch.


There are numerous problems w.r.t. to alignment of DImode to 32 bits:

- it is not clear if this new alignment violates store layout ABI requirements
- it violates MS bitfields spec (testsuite failures)
- can misalign SSE and MMX DImode loads
- can stall store forwarding when DImode crosses 16byte boundary on stack

Due to above problems, I have revert DImode alignment patch, so DImode is now aligned back to its natural alignment (8bytes). It is simply too much pain for too low gain.

OTOH, the patch uncovered misaligned SSE constants in constant pool.

2008-03-23 Uros Bizjak <>

       2008-03-05  H.J. Lu  <>

       * config/i386/i386-modes.def: Use 4 byte alignment on DI for
       32bit host.

2008-03-19 Uros Bizjak <>

       PR target/35496
       * stor-layout.c (update_alignment_for_field): Set minimum alignment
       of the underlying type of a MS bitfield layout to the natural
       alignment of the type.

2008-03-22 Uros Bizjak <>

       * config/i386/i386.c (assign_386_stack_local): Align DImode slots
       to their natural alignment to avoid store forwarding stalls.

Patch was bootstrapped and regression tested on x86_64-pc-linux-gnu {,-m32}, committed to mainline.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]