i386-protos.h (x86_field_alignment): Declare.
* i386-protos.h (x86_field_alignment): Declare. * i386.c (x86_field_alignment): Define. * i386.h (ADJUST_FIELD_ALIGNMENT): New. (BIGGEST_FIELD_ALIGNMENT): Kill. From-SVN: r54674
This commit is contained in:
parent
7ee0238171
commit
e932b21b18
4 changed files with 28 additions and 7 deletions
|
@ -1,3 +1,10 @@
|
|||
Sun Jun 16 22:16:10 CEST 2002 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* i386-protos.h (x86_field_alignment): Declare.
|
||||
* i386.c (x86_field_alignment): Define.
|
||||
* i386.h (ADJUST_FIELD_ALIGNMENT): New.
|
||||
(BIGGEST_FIELD_ALIGNMENT): Kill.
|
||||
|
||||
2002-06-16 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* vax.md (casesi): Use emit_jump_insn. Tidy expander pattern.
|
||||
|
|
|
@ -205,6 +205,7 @@ extern unsigned int i386_pe_section_type_flags PARAMS ((tree, const char *,
|
|||
int));
|
||||
extern void i386_pe_asm_named_section PARAMS ((const char *, unsigned int));
|
||||
extern void x86_output_mi_thunk PARAMS ((FILE *, int, tree));
|
||||
extern int x86_field_alignment PARAMS ((tree, int));
|
||||
#endif
|
||||
|
||||
extern rtx ix86_tls_get_addr PARAMS ((void));
|
||||
|
|
|
@ -13803,4 +13803,21 @@ x86_output_mi_thunk (file, delta, function)
|
|||
}
|
||||
}
|
||||
|
||||
int
|
||||
x86_field_alignment (field, computed)
|
||||
tree field;
|
||||
int computed;
|
||||
{
|
||||
enum machine_mode mode;
|
||||
if (TARGET_64BIT || DECL_USER_ALIGN (field) || TARGET_ALIGN_DOUBLE)
|
||||
return computed;
|
||||
mode = TYPE_MODE (TREE_CODE (TREE_TYPE (field)) == ARRAY_TYPE
|
||||
? get_inner_array_type (field) : TREE_TYPE (field));
|
||||
if ((mode == DFmode || mode == DCmode
|
||||
|| mode == DImode || mode == CDImode)
|
||||
&& !TARGET_ALIGN_DOUBLE)
|
||||
return MIN (32, computed);
|
||||
return computed;
|
||||
}
|
||||
|
||||
#include "gt-i386.h"
|
||||
|
|
|
@ -714,13 +714,9 @@ extern int x86_prefetch_sse;
|
|||
/* The published ABIs say that doubles should be aligned on word
|
||||
boundaries, so lower the aligment for structure fields unless
|
||||
-malign-double is set. */
|
||||
/* BIGGEST_FIELD_ALIGNMENT is also used in libobjc, where it must be
|
||||
constant. Use the smaller value in that context. */
|
||||
#ifndef IN_TARGET_LIBS
|
||||
#define BIGGEST_FIELD_ALIGNMENT (TARGET_64BIT ? 128 : (TARGET_ALIGN_DOUBLE ? 64 : 32))
|
||||
#else
|
||||
#define BIGGEST_FIELD_ALIGNMENT 32
|
||||
#endif
|
||||
|
||||
#define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \
|
||||
x86_field_alignment (FIELD, COMPUTED)
|
||||
|
||||
/* If defined, a C expression to compute the alignment given to a
|
||||
constant that is being placed in memory. EXP is the constant
|
||||
|
|
Loading…
Add table
Reference in a new issue