Index: gcc/cp/class.c
===================================================================
--- gcc/cp/class.c	(revision 125757)
+++ gcc/cp/class.c	(working copy)
@@ -2748,26 +2748,12 @@
 	 make it through without complaint.  */
       abstract_virtuals_error (field, type);
 
-      if (TREE_CODE (t) == UNION_TYPE)
-	{
-	  if (TYPE_NEEDS_CONSTRUCTING (type))
-	    error ("member %q+#D with constructor not allowed in union",
-		   field);
-	  if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type))
-	    error ("member %q+#D with destructor not allowed in union", field);
-	  if (TYPE_HAS_COMPLEX_ASSIGN_REF (type))
-	    error ("member %q+#D with copy assignment operator not allowed in union",
-		   field);
-	}
-      else
-	{
-	  TYPE_NEEDS_CONSTRUCTING (t) |= TYPE_NEEDS_CONSTRUCTING (type);
-	  TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t)
-	    |= TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type);
-	  TYPE_HAS_COMPLEX_ASSIGN_REF (t) |= TYPE_HAS_COMPLEX_ASSIGN_REF (type);
-	  TYPE_HAS_COMPLEX_INIT_REF (t) |= TYPE_HAS_COMPLEX_INIT_REF (type);
-	  TYPE_HAS_COMPLEX_DFLT (t) |= TYPE_HAS_COMPLEX_DFLT (type);
-	}
+      TYPE_NEEDS_CONSTRUCTING (t) |= TYPE_NEEDS_CONSTRUCTING (type);
+      TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t)
+	|= TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type);
+      TYPE_HAS_COMPLEX_ASSIGN_REF (t) |= TYPE_HAS_COMPLEX_ASSIGN_REF (type);
+      TYPE_HAS_COMPLEX_INIT_REF (t) |= TYPE_HAS_COMPLEX_INIT_REF (type);
+      TYPE_HAS_COMPLEX_DFLT (t) |= TYPE_HAS_COMPLEX_DFLT (type);
 
       if (!TYPE_HAS_CONST_INIT_REF (type))
 	*cant_have_const_ctor = 1;
