DR 1467
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Jun 2015 16:56:12 +0000 (16:56 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Jun 2015 16:56:12 +0000 (16:56 +0000)
PR c++/51747
* typeck2.c (digest_init_r): Replace previous change with
gcc_unreachable.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@224289 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/typeck2.c

index 089f693..35a1345 100644 (file)
@@ -1,5 +1,10 @@
 2015-06-09  Jason Merrill  <jason@redhat.com>
 
+       DR 1467
+       PR c++/51747
+       * typeck2.c (digest_init_r): Replace previous change with
+       gcc_unreachable.
+
        PR c++/66387
        * semantics.c (process_outer_var_ref): Make sure the value is
        actually constant before returning it.
index b077f02..709875c 100644 (file)
@@ -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))