OSDN Git Service

* init.c (build_zero_init): max_index is the number of
authorsteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 17 Dec 2004 17:10:49 +0000 (17:10 +0000)
committersteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 17 Dec 2004 17:10:49 +0000 (17:10 +0000)
elements, minus 1.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92323 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/init.c

index eb6cb4f..2007959 100644 (file)
@@ -1,3 +1,8 @@
+2004-12-17  Steven Bosscher  <stevenb@suse.de>
+
+       * init.c (build_zero_init): max_index is the number of
+       elements, minus 1.
+
 2004-12-17  Nathan Sidwell  <nathan@codesourcery.com>
 
        PR c++/18721
index 90b84eb..2bff006 100644 (file)
@@ -221,7 +221,11 @@ build_zero_init (tree type, tree nelts, bool static_storage_p)
       init = build_constructor (type, NULL_TREE);
       /* Iterate over the array elements, building initializations.  */
       inits = NULL_TREE;
-      max_index = nelts ? nelts : array_type_nelts (type);
+      if (nelts)
+       max_index = fold (build2 (MINUS_EXPR, TREE_TYPE (nelts),
+                                 nelts, integer_one_node));
+      else
+       max_index = array_type_nelts (type);
       gcc_assert (TREE_CODE (max_index) == INTEGER_CST);
 
       /* A zero-sized array, which is accepted as an extension, will