DR 1467 PR c++/51747
authorJason Merrill <jason@redhat.com>
Tue, 9 Jun 2015 16:56:12 +0000 (12:56 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Tue, 9 Jun 2015 16:56:12 +0000 (12:56 -0400)
DR 1467
PR c++/51747
* typeck2.c (digest_init_r): Replace previous change with
gcc_unreachable.

From-SVN: r224289

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

index 089f693af80fa2e72e0c6022ca6b2d39b3b73f52..35a13457b26a5d6573f135328b7f2a7b3b403e06 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 b077f0273d165f4a09bf9f8c0d94dd41a61dc3a4..709875c71e1425ba540adb8ffedb880a9e036a73 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))