* stor-layout.c (place_field): Set rli->offset_align properly.
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>
Wed, 19 Apr 2000 16:07:51 +0000 (16:07 +0000)
committerRichard Kenner <kenner@gcc.gnu.org>
Wed, 19 Apr 2000 16:07:51 +0000 (12:07 -0400)
From-SVN: r33262

gcc/ChangeLog
gcc/stor-layout.c

index c94482c..b93a25b 100644 (file)
@@ -1,3 +1,7 @@
+Wed Apr 19 12:14:55 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * stor-layout.c (place_field): Set rli->offset_align properly.
+
 2000-04-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * mips.h (BITS_PER_WORD, UNITS_PER_WORD, UNITS_PER_FPREG,
index 0f3119f..412fd31 100644 (file)
@@ -753,6 +753,9 @@ place_field (rli, field)
          rli->offset = round_up (rli->offset, desired_align / BITS_PER_UNIT);
        }
 
+      if (! TREE_CONSTANT (rli->offset))
+       rli->offset_align = desired_align;
+
     }
 
   /* Handle compatibility with PCC.  Note that if the record has any
@@ -821,9 +824,6 @@ place_field (rli, field)
     }
 #endif
 
-  if (! TREE_CONSTANT (rli->offset))
-    rli->offset_align = DECL_ALIGN (field);
-
   /* Offset so far becomes the position of this field after normalizing.  */
   normalize_rli (rli);
   DECL_FIELD_OFFSET (field) = rli->offset;
@@ -866,6 +866,7 @@ place_field (rli, field)
       rli->offset
        = size_binop (PLUS_EXPR, rli->offset, DECL_SIZE_UNIT (field));
       rli->bitpos = bitsize_zero_node;
+      rli->offset_align = MIN (rli->offset_align, DECL_ALIGN (field));
     }
   else
     {