diff options
author | Jason Merrill <jason@redhat.com> | 2010-07-27 18:06:03 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2010-07-27 18:06:03 -0400 |
commit | 462aa169acee3e6dcfad17165aa7fc68ad417409 (patch) | |
tree | 006042e9b7977e67d56f3ee4b12aba0da516f847 /gcc/cp | |
parent | 418e920fc6c08a3f9b20a6996980c7380cbac67c (diff) | |
download | gcc-462aa169acee3e6dcfad17165aa7fc68ad417409.zip gcc-462aa169acee3e6dcfad17165aa7fc68ad417409.tar.gz gcc-462aa169acee3e6dcfad17165aa7fc68ad417409.tar.bz2 |
pt.c (tsubst_expr): Handle getting an AGGR_INIT_EXPR from build_value_init.
* pt.c (tsubst_expr) [DECL_EXPR]: Handle getting an AGGR_INIT_EXPR
from build_value_init.
* init.c (build_value_init_noctor): Give error for unknown array
bound.
From-SVN: r162603
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/init.c | 5 | ||||
-rw-r--r-- | gcc/cp/pt.c | 20 |
3 files changed, 23 insertions, 9 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3541686..3625021 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2010-07-27 Jason Merrill <jason@redhat.com> + + * pt.c (tsubst_expr) [DECL_EXPR]: Handle getting an AGGR_INIT_EXPR + from build_value_init. + * init.c (build_value_init_noctor): Give error for unknown array + bound. + 2010-07-27 Joseph Myers <joseph@codesourcery.com> * cp-objcp-common.h (LANG_HOOKS_MISSING_ARGUMENT): Remove. diff --git a/gcc/cp/init.c b/gcc/cp/init.c index d796fd0..0edb800 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -379,7 +379,10 @@ build_value_init_noctor (tree type) /* If we have an error_mark here, we should just return error mark as we don't know the size of the array yet. */ if (max_index == error_mark_node) - return error_mark_node; + { + error ("cannot value-initialize array of unknown bound %qT", type); + return error_mark_node; + } gcc_assert (TREE_CODE (max_index) == INTEGER_CST); /* A zero-sized array, which is accepted as an extension, will diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 7a33147..2777ab7 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -11697,14 +11697,18 @@ tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl, tree t = RECUR (init); if (init && !t) - /* If we had an initializer but it - instantiated to nothing, - value-initialize the object. This will - only occur when the initializer was a - pack expansion where the parameter packs - used in that expansion were of length - zero. */ - init = build_value_init (TREE_TYPE (decl)); + { + /* If we had an initializer but it + instantiated to nothing, + value-initialize the object. This will + only occur when the initializer was a + pack expansion where the parameter packs + used in that expansion were of length + zero. */ + init = build_value_init (TREE_TYPE (decl)); + if (TREE_CODE (init) == AGGR_INIT_EXPR) + init = get_target_expr (init); + } else init = t; } |