From ed1a150e05a8bac9bc109a2e3644c9b13a566fd6 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Thu, 20 Sep 2001 12:56:59 +0000 Subject: [PATCH] stor-layout.c (layout_type, [...]): Kludge to disable array-too-large test for signed sizetype. * stor-layout.c (layout_type, case ARRAY_TYPE): Kludge to disable array-too-large test for signed sizetype. From-SVN: r45707 --- gcc/ChangeLog | 5 +++++ gcc/stor-layout.c | 11 +++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6f039c6fd8e..1b17a43b660 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Thu Sep 20 09:00:27 2001 Richard Kenner + + * 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 * i386.md (indirect_jump): Allow Pmode operand. diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index e145b97e5d6..57b839f7724 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -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"); -- 2.30.2