mirror of git://gcc.gnu.org/git/gcc.git
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.
From-SVN: r133461
This commit is contained in:
parent
4705677421
commit
808e68bbc8
|
|
@ -1,3 +1,23 @@
|
||||||
|
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>
|
2008-03-22 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
* tree-cfg.c (verify_expr): Recurse again for invariant addresses.
|
* tree-cfg.c (verify_expr): Recurse again for invariant addresses.
|
||||||
|
|
@ -2680,7 +2700,6 @@
|
||||||
2008-02-17 Uros Bizjak <ubizjak@gmail.com>
|
2008-02-17 Uros Bizjak <ubizjak@gmail.com>
|
||||||
|
|
||||||
Revert:
|
Revert:
|
||||||
|
|
||||||
2008-02-15 Uros Bizjak <ubizjak@gmail.com>
|
2008-02-15 Uros Bizjak <ubizjak@gmail.com>
|
||||||
* config/i386/sfp-machine.h (CMPtype): Define as typedef using
|
* config/i386/sfp-machine.h (CMPtype): Define as typedef using
|
||||||
libgcc_cmp_return mode.
|
libgcc_cmp_return mode.
|
||||||
|
|
|
||||||
|
|
@ -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
|
along with GCC; see the file COPYING3. If not see
|
||||||
<http://www.gnu.org/licenses/>. */
|
<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.
|
/* The x86_64 ABI specifies both XF and TF modes.
|
||||||
XFmode is __float80 is IEEE extended; TFmode is __float128
|
XFmode is __float80 is IEEE extended; TFmode is __float128
|
||||||
is IEEE quad. */
|
is IEEE quad. */
|
||||||
|
|
|
||||||
|
|
@ -16315,7 +16315,6 @@ rtx
|
||||||
assign_386_stack_local (enum machine_mode mode, enum ix86_stack_slot n)
|
assign_386_stack_local (enum machine_mode mode, enum ix86_stack_slot n)
|
||||||
{
|
{
|
||||||
struct stack_local_entry *s;
|
struct stack_local_entry *s;
|
||||||
int align;
|
|
||||||
|
|
||||||
gcc_assert (n < MAX_386_STACK_LOCALS);
|
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)
|
if (s->mode == mode && s->n == n)
|
||||||
return copy_rtx (s->rtl);
|
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 *)
|
s = (struct stack_local_entry *)
|
||||||
ggc_alloc (sizeof (struct stack_local_entry));
|
ggc_alloc (sizeof (struct stack_local_entry));
|
||||||
s->n = n;
|
s->n = n;
|
||||||
s->mode = mode;
|
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;
|
s->next = ix86_stack_locals;
|
||||||
ix86_stack_locals = s;
|
ix86_stack_locals = s;
|
||||||
|
|
|
||||||
|
|
@ -699,9 +699,6 @@ update_alignment_for_field (record_layout_info rli, tree field,
|
||||||
&& ! integer_zerop (DECL_SIZE (rli->prev_field)))))
|
&& ! integer_zerop (DECL_SIZE (rli->prev_field)))))
|
||||||
{
|
{
|
||||||
unsigned int type_align = TYPE_ALIGN (type);
|
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);
|
type_align = MAX (type_align, desired_align);
|
||||||
if (maximum_field_alignment != 0)
|
if (maximum_field_alignment != 0)
|
||||||
type_align = MIN (type_align, maximum_field_alignment);
|
type_align = MIN (type_align, maximum_field_alignment);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue