+2008-03-23 Uros Bizjak <ubizjak@gmail.com>
+
+ Revert:
+ 2008-03-05 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config/i386/i386-modes.def: Use 4 byte alignment on DI for
+ 32bit host.
+
+ 2008-03-19 Uros Bizjak <ubizjak@gmail.com>
+
+ 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 <ubizjak@gmail.com>
+
+ * config/i386/i386.c (assign_386_stack_local): Align DImode slots
+ to their natural alignment to avoid store forwarding stalls.
+
2008-03-22 Richard Guenther <rguenther@suse.de>
* tree-cfg.c (verify_expr): Recurse again for invariant addresses.
2008-02-17 Uros Bizjak <ubizjak@gmail.com>
Revert:
-
2008-02-15 Uros Bizjak <ubizjak@gmail.com>
* config/i386/sfp-machine.h (CMPtype): Define as typedef using
libgcc_cmp_return mode.
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
-/* In 32bit, DI mode uses 32bit registers. Only 4 byte alignment
- is needed. */
-ADJUST_ALIGNMENT (DI, (TARGET_64BIT || TARGET_ALIGN_DOUBLE) ? 8 : 4);
-
/* The x86_64 ABI specifies both XF and TF modes.
XFmode is __float80 is IEEE extended; TFmode is __float128
is IEEE quad. */
assign_386_stack_local (enum machine_mode mode, enum ix86_stack_slot n)
{
struct stack_local_entry *s;
- int align;
gcc_assert (n < MAX_386_STACK_LOCALS);
if (s->mode == mode && s->n == n)
return copy_rtx (s->rtl);
- /* Align DImode slots to their natural alignment
- to avoid store forwarding stalls. */
- if (mode == DImode
- && (GET_MODE_BITSIZE (mode) > GET_MODE_ALIGNMENT (mode)))
- align = GET_MODE_BITSIZE (mode);
- else
- align = 0;
-
s = (struct stack_local_entry *)
ggc_alloc (sizeof (struct stack_local_entry));
s->n = n;
s->mode = mode;
- s->rtl = assign_stack_local (mode, GET_MODE_SIZE (mode), align);
+ s->rtl = assign_stack_local (mode, GET_MODE_SIZE (mode), 0);
s->next = ix86_stack_locals;
ix86_stack_locals = s;
&& ! integer_zerop (DECL_SIZE (rli->prev_field)))))
{
unsigned int type_align = TYPE_ALIGN (type);
- unsigned int type_size
- = tree_low_cst (TYPE_SIZE (type), 1);
- type_align = MAX (type_align, type_size);
type_align = MAX (type_align, desired_align);
if (maximum_field_alignment != 0)
type_align = MIN (type_align, maximum_field_alignment);