* config/i386/i386.c (ix86_data_alignment): Don't force alignment to
256 bits when optimize_size.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109537
138bc75d-0d04-0410-961f-
82ee72b054a4
2006-01-10 Jan Beulich <jbeulich@novell.com>
+ * config/i386/i386.c (ix86_data_alignment): Don't force alignment to
+ 256 bits when optimize_size.
+
+2006-01-10 Jan Beulich <jbeulich@novell.com>
+
* config/i386/netware.h (TARGET_SUBTARGET_DEFAULT): Include
MASK_ALIGN_DOUBLE.
* config/i386/nwld.h (LINK_SPEC): Add --extensions:GNU option.
int
ix86_data_alignment (tree type, int align)
{
+ int max_align = optimize_size ? BITS_PER_WORD : 256;
+
if (AGGREGATE_TYPE_P (type)
- && TYPE_SIZE (type)
- && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
- && (TREE_INT_CST_LOW (TYPE_SIZE (type)) >= 256
- || TREE_INT_CST_HIGH (TYPE_SIZE (type))) && align < 256)
- return 256;
+ && TYPE_SIZE (type)
+ && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
+ && (TREE_INT_CST_LOW (TYPE_SIZE (type)) >= (unsigned) max_align
+ || TREE_INT_CST_HIGH (TYPE_SIZE (type)))
+ && align < max_align)
+ align = max_align;
/* x86-64 ABI requires arrays greater than 16 bytes to be aligned
to 16byte boundary. */