Index: gcc/testsuite/g++.dg/init/pr25811-2.C
===================================================================
--- gcc/testsuite/g++.dg/init/pr25811-2.C	(revision 0)
+++ gcc/testsuite/g++.dg/init/pr25811-2.C	(revision 0)
@@ -0,0 +1,26 @@
+// { dg-do compile }
+// { dg-options -fpermissive }
+
+struct A
+{
+  int const i; // { dg-message "should be initialized" }
+};
+
+struct B
+{
+  int& r; // { dg-message "should be initialized" }
+};
+
+struct C
+{
+  int const i : 1; // { dg-message "should be initialized" }
+};
+
+void f()
+{
+    new A;  // { dg-warning "uninitialized" }
+    new B;  // { dg-warning "uninitialized" }
+    new C;  // { dg-warning "uninitialized" }
+    C c;    // { dg-warning "uninitialized" }
+    A a[1]; // { dg-warning "uninitialized" }
+}
Index: gcc/cp/init.c
===================================================================
--- gcc/cp/init.c	(revision 173980)
+++ gcc/cp/init.c	(working copy)
@@ -1913,8 +1913,9 @@ diagnose_uninitialized_cst_or_ref_member
 	  if (complain)
 	    {
 	      if (using_new)
-		error ("uninitialized reference member in %q#T "
-		       "using %<new%> without new-initializer", origin);
+		permerror (input_location,
+			   "uninitialized reference member in %q#T "
+			   "using %<new%> without new-initializer", origin);
 	      else
 		error ("uninitialized reference member in %q#T", origin);
 	      inform (DECL_SOURCE_LOCATION (field),
@@ -1928,10 +1929,12 @@ diagnose_uninitialized_cst_or_ref_member
 	  if (complain)
 	    {
 	      if (using_new)
-		error ("uninitialized const member in %q#T "
-		       "using %<new%> without new-initializer", origin);
+		permerror (input_location,
+			   "uninitialized const member in %q#T "
+			   "using %<new%> without new-initializer", origin);
 	      else
-		error ("uninitialized const member in %q#T", origin);
+		permerror (input_location,
+			   "uninitialized const member in %q#T", origin);
 	      inform (DECL_SOURCE_LOCATION (field),
 		      "%qD should be initialized", field);
 	    }
