OSDN Git Service

2006-01-10 Jan Beulich <jbeulich@novell.com>
authorjbeulich <jbeulich@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 10 Jan 2006 07:25:39 +0000 (07:25 +0000)
committerjbeulich <jbeulich@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 10 Jan 2006 07:25:39 +0000 (07:25 +0000)
* 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

gcc/ChangeLog
gcc/config/i386/i386.c

index a12ae46..ad3f304 100644 (file)
@@ -1,5 +1,10 @@
 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.
index c9886fd..e48e288 100644 (file)
@@ -13363,12 +13363,15 @@ ix86_constant_alignment (tree exp, int align)
 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.  */