diff options
Diffstat (limited to 'gcc/cp/init.c')
| -rw-r--r-- | gcc/cp/init.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/cp/init.c b/gcc/cp/init.c index a88d0c0..ad40736 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -1628,10 +1628,14 @@ build_new_1 (tree placement, tree type, tree nelts, tree init, function context. Methinks that's not it's purvey. So we'll do our own VLA layout later. */ vla_p = true; - full_type = build_cplus_array_type (type, NULL_TREE); index = convert (sizetype, nelts); index = size_binop (MINUS_EXPR, index, size_one_node); - TYPE_DOMAIN (full_type) = build_index_type (index); + index = build_index_type (index); + full_type = build_cplus_array_type (type, NULL_TREE); + /* We need a copy of the type as build_array_type will return a shared copy + of the incomplete array type. */ + full_type = build_distinct_type_copy (full_type); + TYPE_DOMAIN (full_type) = index; } else { |
