PR c++/93173 - incorrect tree sharing.
authorJason Merrill <jason@redhat.com>
Fri, 10 Jan 2020 18:46:57 +0000 (13:46 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Fri, 10 Jan 2020 18:46:57 +0000 (13:46 -0500)
commit640b23d7ff5f3fad005dcbfb04a36e27000fc150
tree61f43978030d8d42b472bfc871aed800deaa0e66
parent9b0700571fe390afcca32dcb3b2122640e628c95
PR c++/93173 - incorrect tree sharing.

My patch for 93033 wasn't sufficient to handle all the possible sharing
introduced by split_nonconstant_init, and it occurred to me that it would
make sense to use the same unsharing technique as unshare_body, namely
copy_if_shared.

PR c++/93033
gcc/
* gimplify.c (copy_if_shared): No longer static.
* gimplify.h: Declare it.
gcc/cp/
* cp-gimplify.c (cp_gimplify_init_expr, cp_gimplify_expr): Use
copy_if_shared after cp_genericize_tree.
* typeck2.c (split_nonconstant_init): Don't unshare here.

From-SVN: r280126
gcc/ChangeLog
gcc/cp/ChangeLog
gcc/cp/cp-gimplify.c
gcc/cp/typeck2.c
gcc/gimplify.c
gcc/gimplify.h
gcc/testsuite/g++.dg/cpp0x/initlist-new3.C [new file with mode: 0644]