From e5c15e804d037a6dae1e820543480210319838e6 Mon Sep 17 00:00:00 2001 From: rguenth Date: Wed, 28 Mar 2012 15:04:23 +0000 Subject: [PATCH] 2012-03-28 Richard Guenther * typeck2.c (process_init_constructor_array): Use the proper type for computing the array length. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@185919 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/typeck2.c | 11 ++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 0d9be4f..0c96065 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2012-03-28 Richard Guenther + + * typeck2.c (process_init_constructor_array): Use the proper + type for computing the array length. + 2012-03-27 Meador Inge PR c++/52672 diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c index 80a1d04..f9b525c 100644 --- a/gcc/cp/typeck2.c +++ b/gcc/cp/typeck2.c @@ -1054,9 +1054,14 @@ process_init_constructor_array (tree type, tree init, { tree domain = TYPE_DOMAIN (type); if (domain) - len = (TREE_INT_CST_LOW (TYPE_MAX_VALUE (domain)) - - TREE_INT_CST_LOW (TYPE_MIN_VALUE (domain)) - + 1); + len = double_int_ext + (double_int_add + (double_int_sub + (tree_to_double_int (TYPE_MAX_VALUE (domain)), + tree_to_double_int (TYPE_MIN_VALUE (domain))), + double_int_one), + TYPE_PRECISION (TREE_TYPE (domain)), + TYPE_UNSIGNED (TREE_TYPE (domain))).low; else unbounded = true; /* Take as many as there are. */ } -- 2.7.4