From b01f0d133b7ad093964100495fd38e62da3adf83 Mon Sep 17 00:00:00 2001 From: Andrew Pinski Date: Tue, 14 Dec 2004 20:13:16 +0000 Subject: re PR middle-end/18965 (ICE in gimplify_init_ctor_eval) 2004-12-14 Andrew Pinski 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 Andrew Pinski PR c++/18965 * g++.dg/init/array17.C: New test. From-SVN: r92158 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/init.c | 9 +++++++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/init/array17.C | 5 +++++ 4 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/g++.dg/init/array17.C (limited to 'gcc') 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 + + 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 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); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b92d0a5..72443ba 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-12-14 Andrew Pinski + + PR c++/18965 + * g++.dg/init/array17.C: New test. + 2004-12-14 Mark Mitchell PR c++/18793 diff --git a/gcc/testsuite/g++.dg/init/array17.C b/gcc/testsuite/g++.dg/init/array17.C new file mode 100644 index 0000000..7fdb196 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/array17.C @@ -0,0 +1,5 @@ +class StringMap { + const char empty_str[1]; +public: + StringMap() : empty_str() {} +}; -- cgit v1.1