stor-layout.c (place_field): Treat overflowing DECL_SIZE_UNIT as if size were variable.
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>
Sat, 16 Dec 2000 15:46:00 +0000 (15:46 +0000)
committerRichard Kenner <kenner@gcc.gnu.org>
Sat, 16 Dec 2000 15:46:00 +0000 (10:46 -0500)
* stor-layout.c (place_field): Treat overflowing DECL_SIZE_UNIT
as if size were variable.

From-SVN: r38307

gcc/ChangeLog
gcc/stor-layout.c

index 3a5637adf769bcbf9d9c3411a8bb1ac326186693..3bf852857276381c2207837671e7587557876037 100644 (file)
@@ -1,5 +1,8 @@
 Sat Dec 16 10:41:11 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
+       * stor-layout.c (place_field): Treat overflowing DECL_SIZE_UNIT
+       as if size were variable.
+
        * expmed.c (expand_mult): Write REG_EQUAL note with proper mode.
 
 2000-12-16  Neil Booth  <neil@daikokuya.demon.co.uk>
index 7fb7f2a1ddf1ae3b3df26da7a657367c498c42a7..d909ab74d741dce2b6f55d8882e16a4d971de55c 100644 (file)
@@ -893,7 +893,8 @@ place_field (rli, field)
      is printed in finish_struct.  */
   if (DECL_SIZE (field) == 0)
     /* Do nothing.  */;
-  else if (! TREE_CONSTANT (DECL_SIZE_UNIT (field)))
+  else if (TREE_CODE (DECL_SIZE_UNIT (field)) != INTEGER_CST
+          || TREE_CONSTANT_OVERFLOW (DECL_SIZE_UNIT (field)))
     {
       rli->offset
        = size_binop (PLUS_EXPR, rli->offset,