diff options
Diffstat (limited to 'gcc/cp')
| -rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/cp/init.c | 9 |
2 files changed, 13 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4b2f677..ef54628 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2004-12-14 Andrew Pinski <pinskia@physics.uc.edu> + + PR c++/18965 + * init.c (build_zero_init): If the max_index is 0, there is no + need to create a RANGE_EXPR. + 2004-12-14 Mark Mitchell <mark@codesourcery.com> PR c++/18793 diff --git a/gcc/cp/init.c b/gcc/cp/init.c index 70703ef..a1a404c 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -231,8 +231,13 @@ build_zero_init (tree type, tree nelts, bool static_storage_p) tree elt_init = build_zero_init (TREE_TYPE (type), /*nelts=*/NULL_TREE, static_storage_p); - tree range = build2 (RANGE_EXPR, - sizetype, size_zero_node, max_index); + tree range; + + /* If this is a one element array, we just use a regular init. */ + if (tree_int_cst_equal (size_zero_node, max_index)) + range = size_zero_node; + else + range = build2 (RANGE_EXPR, sizetype, size_zero_node, max_index); inits = tree_cons (range, elt_init, inits); } |
