===================================================================
@@ -5707,7 +5707,7 @@ enforce_access (tree basetype_path, tree decl, tre
if (TREE_PRIVATE (decl))
error ("%q+#D is private", diag_decl);
else if (TREE_PROTECTED (decl))
- error ("%q+#D is protected", diag_decl);
+ error ("%q+#D, declared protected, is inaccessible", diag_decl);
else
error ("%q+#D is inaccessible", diag_decl);
error ("within this context");
===================================================================
@@ -0,0 +1,16 @@
+// PR c++/17314
+
+class A
+{
+protected:
+ A(){} // { dg-error "declared protected" }
+};
+
+class B : virtual A {};
+
+class C : public B {}; // { dg-error "within this context" }
+ // { dg-message "deleted" "" { target c++11 } 11 }
+int main ()
+{
+ C c; // { dg-message "required here" "" { target c++98 } }
+} // { dg-error "deleted" "" { target c++11 } 15 }