From: uros Date: Sun, 23 Mar 2008 12:07:34 +0000 (+0000) Subject: Revert: X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=933a719ea14085885240883c16565df7f9026063 Revert: 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@133461 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e098eb2671c..27dbcb230c1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,23 @@ +2008-03-23 Uros Bizjak + + Revert: + 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. + 2008-03-22 Richard Guenther * tree-cfg.c (verify_expr): Recurse again for invariant addresses. @@ -2680,7 +2700,6 @@ 2008-02-17 Uros Bizjak Revert: - 2008-02-15 Uros Bizjak * config/i386/sfp-machine.h (CMPtype): Define as typedef using libgcc_cmp_return mode. diff --git a/gcc/config/i386/i386-modes.def b/gcc/config/i386/i386-modes.def index d94b1b929c4..9be74982180 100644 --- a/gcc/config/i386/i386-modes.def +++ b/gcc/config/i386/i386-modes.def @@ -17,10 +17,6 @@ You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see . */ -/* 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. */ diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 60c000c6335..8ddfa9f183b 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -16315,7 +16315,6 @@ rtx 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); @@ -16326,19 +16325,11 @@ assign_386_stack_local (enum machine_mode mode, enum ix86_stack_slot n) 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; diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index ff46687834d..67e4c25fbdc 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -699,9 +699,6 @@ update_alignment_for_field (record_layout_info rli, tree field, && ! 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);