Index: gcc/testsuite/g++.old-deja/g++.brendan/crash25.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.brendan/crash25.C	(revision 182209)
+++ gcc/testsuite/g++.old-deja/g++.brendan/crash25.C	(working copy)
@@ -14,5 +14,5 @@ public:
 class buff_head : private port_head {
 public:
 	static int rep;
-	port_head::cap;
+	port_head::cap; // { dg-warning "" } deprecated
 };
Index: gcc/testsuite/g++.old-deja/g++.brendan/crash56.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.brendan/crash56.C	(revision 182209)
+++ gcc/testsuite/g++.old-deja/g++.brendan/crash56.C	(working copy)
@@ -1,5 +1,5 @@
 // { dg-do assemble  }
-// { dg-options "" }
+// { dg-options "-Wno-deprecated" }
 // GROUPS passed old-abort
 
 const bool FALSE = 0;
Index: gcc/testsuite/g++.old-deja/g++.jason/access14.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.jason/access14.C	(revision 182209)
+++ gcc/testsuite/g++.old-deja/g++.jason/access14.C	(working copy)
@@ -4,7 +4,7 @@ template <class T> struct A { T t; };
 
 template <class T> class B: private T {
  public:
-  T::t;			   // { dg-bogus "" } doesn't recognize access decl
+  T::t; // { dg-warning "" } deprecated
 };
 
 template class B<A<int> >;
Index: gcc/testsuite/g++.old-deja/g++.jason/access8.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.jason/access8.C	(revision 182209)
+++ gcc/testsuite/g++.old-deja/g++.jason/access8.C	(working copy)
@@ -12,7 +12,7 @@ protected:
 class mel : private inh {
 protected:
         int t;
-	inh::myf;
+	inh::myf;  // { dg-warning "" } deprecated 
 };
 
 class top_t : protected mel {
Index: gcc/testsuite/g++.old-deja/g++.jason/access1.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.jason/access1.C	(revision 182209)
+++ gcc/testsuite/g++.old-deja/g++.jason/access1.C	(working copy)
@@ -8,10 +8,10 @@ public:
 
 class B: private A {
 public:
-  A::foo;
+  A::foo; // { dg-warning "" } deprecated 
 };
 
 void foo() {
   B b;
-  b.foo ();			// { dg-bogus "" } 
+  b.foo ();                    // { dg-bogus "" }
 }
Index: gcc/testsuite/g++.old-deja/g++.other/access3.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.other/access3.C	(revision 182209)
+++ gcc/testsuite/g++.old-deja/g++.other/access3.C	(working copy)
@@ -10,7 +10,7 @@ struct A
 
 struct B: private virtual A
 {
-  A::f;
+  A::f; // { dg-warning "" } deprecated
 };
 
 struct C: private virtual A, public B
Index: gcc/testsuite/g++.old-deja/g++.other/access5.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.other/access5.C	(revision 182209)
+++ gcc/testsuite/g++.old-deja/g++.other/access5.C	(working copy)
@@ -9,7 +9,7 @@ protected:
 class B : private A
 {
 protected:
-  A::i;
+  A::i; // { dg-warning "" } deprecated
 };
 
 struct C : public B {
Index: gcc/testsuite/g++.old-deja/g++.law/unsorted1.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.law/unsorted1.C	(revision 182209)
+++ gcc/testsuite/g++.old-deja/g++.law/unsorted1.C	(working copy)
@@ -20,7 +20,7 @@ class B : public A {
 
 class C : private B {
   public:
-    B::func;
+    B::func; // { dg-warning "" } deprecated 
 };
 
 class D {
Index: gcc/testsuite/g++.old-deja/g++.law/visibility22.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.law/visibility22.C	(revision 182209)
+++ gcc/testsuite/g++.old-deja/g++.law/visibility22.C	(working copy)
@@ -19,7 +19,7 @@ public:
 
 class B : private A {
 protected:
-        A::f;
+        A::f; // { dg-warning "" } deprecated 
 public:
-        A::g;
+        A::g; // { dg-warning "" } deprecated 
 };
Index: gcc/testsuite/g++.old-deja/g++.law/visibility26.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.law/visibility26.C	(revision 182209)
+++ gcc/testsuite/g++.old-deja/g++.law/visibility26.C	(working copy)
@@ -14,5 +14,7 @@ class X {
 class Y : private X {
   public:
     void f(int);
-    X::f;  // used to be an error; now equivalent to 'using X::f'
+
+    // 'X::f' used to be an error; now equivalent to 'using X::f'
+    X::f; // { dg-warning "" } deprecated
 };
Index: gcc/testsuite/g++.old-deja/g++.mike/p2746.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.mike/p2746.C	(revision 182209)
+++ gcc/testsuite/g++.old-deja/g++.mike/p2746.C	(working copy)
@@ -86,7 +86,7 @@ public:
   void remove(T *p) { IListBase::remove(p); }
   T *head() { return (T *)IListBase::head(); }
   T *get() { return (T *)IListBase::get(); }
-  IListBase::empty;
+  IListBase::empty; // { dg-warning "" } deprecated
 friend class IListIter<T>;
 };
 
@@ -136,8 +136,8 @@ class IListIter : private IListIterBase
 public:
   IListIter(const IList<T> &list) : IListIterBase(list) { }
   T *cur() { return (T *)IListIterBase::cur(); }
-  IListIterBase::next;
-  IListIterBase::done;
+  IListIterBase::next; // { dg-warning "" } deprecated
+  IListIterBase::done; // { dg-warning "" } deprecated
 };
 
 
Index: gcc/testsuite/g++.dg/debug/using1.C
===================================================================
--- gcc/testsuite/g++.dg/debug/using1.C	(revision 182209)
+++ gcc/testsuite/g++.dg/debug/using1.C	(working copy)
@@ -9,7 +9,7 @@ struct A
 
 struct B : public A
 {
-  A::d;
+  A::d; // { dg-warning "deprecated" }
 };
 
 B b;
Index: gcc/testsuite/g++.dg/lookup/using51.C
===================================================================
--- gcc/testsuite/g++.dg/lookup/using51.C	(revision 182209)
+++ gcc/testsuite/g++.dg/lookup/using51.C	(working copy)
@@ -1,5 +1,6 @@
 // PR c++/51382
 // { dg-do compile }
+// { dg-options "-Wno-deprecated" }
 
 template< int Value >
 struct Base
Index: gcc/testsuite/g++.dg/inherit/pr30297.C
===================================================================
--- gcc/testsuite/g++.dg/inherit/pr30297.C	(revision 182209)
+++ gcc/testsuite/g++.dg/inherit/pr30297.C	(working copy)
@@ -7,5 +7,5 @@ struct A
 
 extern "C" struct B : A
 {
-  A::i;
+  A::i; // { dg-warning "deprecated" }
 };
Index: gcc/testsuite/g++.dg/inherit/access8.C
===================================================================
--- gcc/testsuite/g++.dg/inherit/access8.C	(revision 182209)
+++ gcc/testsuite/g++.dg/inherit/access8.C	(working copy)
@@ -13,8 +13,8 @@ public:
 class B : private A
 {
 public:
-  A::i;
-  A::A1;
+  A::i; // { dg-warning "deprecated" }
+  A::A1; // { dg-warning "deprecated" }
 };
 
 void
Index: gcc/testsuite/g++.dg/torture/pr39362.C
===================================================================
--- gcc/testsuite/g++.dg/torture/pr39362.C	(revision 182209)
+++ gcc/testsuite/g++.dg/torture/pr39362.C	(working copy)
@@ -57,7 +57,7 @@ template <typename T> struct I <T, 0> :
   I (int capacity) { allocateBuffer (capacity); }
   ~I () { this->deallocateBuffer (buffer ()); }
   using H <T>::allocateBuffer;
-  H <T>::buffer;
+  H <T>::buffer; // { dg-warning "deprecated" } 
 };
 template <typename T, int cap = 0> struct J
 {
Index: gcc/testsuite/g++.dg/template/crash13.C
===================================================================
--- gcc/testsuite/g++.dg/template/crash13.C	(revision 182209)
+++ gcc/testsuite/g++.dg/template/crash13.C	(working copy)
@@ -13,6 +13,8 @@ template <typename T> struct C
 {
     typedef typename A<T>::B X;
     X::Y;			// { dg-error "not a base type" }
+// { dg-warning "deprecated" "" { target *-*-* } 15 }
 };
 
 C<void> c;			// { dg-message "required" }
+
Index: gcc/testsuite/g++.dg/template/using10.C
===================================================================
--- gcc/testsuite/g++.dg/template/using10.C	(revision 182209)
+++ gcc/testsuite/g++.dg/template/using10.C	(working copy)
@@ -7,5 +7,5 @@ struct B {
 template <typename T> class I : public B {}; 
  
 template <typename T> class D : private I<T> { 
-  I<T>::B::foo; 
+  I<T>::B::foo; // { dg-warning "deprecated" } 
 }; 
Index: gcc/cp/parser.c
===================================================================
--- gcc/cp/parser.c	(revision 182209)
+++ gcc/cp/parser.c	(working copy)
@@ -14863,9 +14863,14 @@ cp_parser_using_declaration (cp_parser*
   tree decl;
   tree identifier;
   tree qscope;
+  int oldcount = errorcount;
+  cp_token *diag_token;
 
   if (access_declaration_p)
-    cp_parser_parse_tentatively (parser);
+    {
+      diag_token = cp_lexer_peek_token (parser->lexer);
+      cp_parser_parse_tentatively (parser);
+    }
   else
     {
       /* Look for the `using' keyword.  */
@@ -14973,7 +14978,13 @@ cp_parser_using_declaration (cp_parser*
 
   /* Look for the final `;'.  */
   cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON);
-  
+
+  if (access_declaration_p && errorcount == oldcount)
+    warning_at (diag_token->location, OPT_Wdeprecated,
+		"access declarations are deprecated "
+		"in favour of using-declarations; "
+		"suggestion: add the %<using%> keyword");
+
   return true;
 }
 
