stor-layout.c (layout_type): Do not allow alignment of array elements to be greater...
authorSteve Ellcey <sje@cup.hp.com>
Fri, 7 Oct 2005 17:41:11 +0000 (17:41 +0000)
committerSteve Ellcey <sje@gcc.gnu.org>
Fri, 7 Oct 2005 17:41:11 +0000 (17:41 +0000)
* stor-layout.c (layout_type): Do not allow alignment of array
elements to be greater than their size.

From-SVN: r105095

gcc/ChangeLog
gcc/stor-layout.c

index a5f0110d77b58acd617ed58612d43ca738bb8047..e0930b0ef7fe54135a6c91f0c261562535743915 100644 (file)
@@ -1,3 +1,8 @@
+2005-10-07  Steve Ellcey  <sje@cup.hp.com>
+
+       * stor-layout.c (layout_type): Do not allow alignment of array
+       elements to be greater than their size.
+
 2005-10-07  Steve Ellcey  <sje@cup.hp.com>
 
        * config.host (hppa*-*-hpux*): Change out_host_hook_obj and
index f7bf20b03ad9e8a5c45ab0c2623ec447b9efac54..aec80a3f294a599295f61356c9c537c7fe46afef 100644 (file)
@@ -1817,6 +1817,12 @@ layout_type (tree type)
                TYPE_MODE (type) = BLKmode;
              }
          }
+       if (TYPE_SIZE_UNIT (element)
+           && TREE_CODE (TYPE_SIZE_UNIT (element)) == INTEGER_CST
+           && !integer_zerop (TYPE_SIZE_UNIT (element))
+           && compare_tree_int (TYPE_SIZE_UNIT (element),
+                                TYPE_ALIGN_UNIT (element)) < 0)
+         error ("alignment of array elements is greater than element size");
        break;
       }