commit 8d2793c42fc3de4a0b665f4c2ff2a2946ae0beda Author: Jason Merrill Date: Tue Jun 9 09:51:31 2015 -0400 DR 1467 PR c++/51747 * typeck2.c (digest_init_r): Replace previous change with gcc_unreachable. diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c index b077f02..709875c 100644 --- a/gcc/cp/typeck2.c +++ b/gcc/cp/typeck2.c @@ -1089,6 +1089,7 @@ digest_init_r (tree type, tree init, bool nested, int flags, || TREE_CODE (type) == UNION_TYPE || TREE_CODE (type) == COMPLEX_TYPE); +#ifdef ENABLE_CHECKING /* "If T is a class type and the initializer list has a single element of type cv U, where U is T or a class derived from T, the object is initialized from that element." */ @@ -1099,8 +1100,10 @@ digest_init_r (tree type, tree init, bool nested, int flags, { tree elt = CONSTRUCTOR_ELT (init, 0)->value; if (reference_related_p (type, TREE_TYPE (elt))) - init = elt; + /* We should have fixed this in reshape_init. */ + gcc_unreachable (); } +#endif if (BRACE_ENCLOSED_INITIALIZER_P (init) && !TYPE_NON_AGGREGATE_CLASS (type))