stor-layout.c (layout_type, [...]): Kludge to disable array-too-large test for signed...
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>
Thu, 20 Sep 2001 12:56:59 +0000 (12:56 +0000)
committerRichard Kenner <kenner@gcc.gnu.org>
Thu, 20 Sep 2001 12:56:59 +0000 (08:56 -0400)
* stor-layout.c (layout_type, case ARRAY_TYPE): Kludge to disable
array-too-large test for signed sizetype.

From-SVN: r45707

gcc/ChangeLog
gcc/stor-layout.c

index 6f039c6fd8e7ed026e580543fff0d064693d3703..1b17a43b6609106ba444b17d157ead97dbe84859 100644 (file)
@@ -1,3 +1,8 @@
+Thu Sep 20 09:00:27 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * stor-layout.c (layout_type, case ARRAY_TYPE): Kludge to disable
+       array-too-large test for signed sizetype.
+
 Thu Sep 20 12:19:36 CEST 2001  Jan Hubicka  <jh@suse.cz>
 
        * i386.md (indirect_jump): Allow Pmode operand.
index e145b97e5d6f14005bbf80f2bf6ab83af08b58f9..57b839f7724bce40463b9bf79e2246934ed6add5 100644 (file)
@@ -1445,9 +1445,16 @@ layout_type (type)
                = size_binop (MULT_EXPR, TYPE_SIZE_UNIT (element), length);
 
            /* Complain if the user has requested an array too large to
-              fit in size_t.  */
+              fit in size_t.
+
+              ??? Disable this test for signed sizetypes.  This has the effect
+              of disabling it for Ada, where it will cause trouble.  However,
+              this test doesn't make sense for C either since there should
+              be no problem with a type whose size overflows, only an
+              object whose size overflows.  */
            if (TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
-               && TREE_OVERFLOW (TYPE_SIZE (type)))
+               && TREE_OVERFLOW (TYPE_SIZE (type))
+               && TREE_UNSIGNED (TREE_TYPE (TYPE_SIZE (type))))
              {
                error ("requested array too large for target");