class.c (finish_struct_1): Force alignment of non-bitfields to BITS_PER_UNIT.
authorAndrew Haley <aph@cygnus.com>
Thu, 14 Oct 1999 10:49:23 +0000 (10:49 +0000)
committerAndrew Haley <aph@gcc.gnu.org>
Thu, 14 Oct 1999 10:49:23 +0000 (10:49 +0000)
1999-10-13  Andrew Haley  <aph@cygnus.com>

* class.c (finish_struct_1): Force alignment of non-bitfields to
BITS_PER_UNIT.

From-SVN: r29973

gcc/cp/ChangeLog
gcc/cp/class.c

index 3593ce4..7cedc4a 100644 (file)
@@ -1,3 +1,8 @@
+1999-10-13  Andrew Haley  <aph@cygnus.com>
+
+       * class.c (finish_struct_1): Force alignment of non-bitfields to
+       BITS_PER_UNIT.
+
 Wed Oct 13 22:01:35 1999  J"orn Rennecke <amylaar@cygnus.co.uk>
 
        * typeck2.c (process_init_constructor): Handle empty constructors.
index d380186..f393a02 100644 (file)
@@ -3654,6 +3654,14 @@ finish_struct_1 (t)
                cp_error_at ("multiple fields in union `%T' initialized");
              any_default_members = 1;
            }
+
+         {
+           unsigned int min_align = (DECL_PACKED (x) ? BITS_PER_UNIT
+                                     : TYPE_ALIGN (TREE_TYPE (x)));
+           /* Non-bit-fields are aligned for their type, except packed
+              fields which require only BITS_PER_UNIT alignment.  */
+           DECL_ALIGN (x) = MAX (DECL_ALIGN (x), min_align);
+         }
        }
     }