diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/search.c | 6 | ||||
-rw-r--r-- | gcc/doc/extend.texi | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.mike/p811.C | 4 |
6 files changed, 29 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bfae47a..067be29 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-11-01 Nathan Sidwell <nathan@codesourcery.com> + + PR c++/18064 + * doc/extend.texi (Deprecated Features): Deprecate G++ covariant + extension. + 2004-10-16 Daniel Berlin <dberlin@dberlin.org> Fix PR tree-optimization/17672 diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index bea717b..022148e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2004-11-01 Nathan Sidwell <nathan@codesourcery.com> + + PR c++/18064 + * search.c (check_final_overrider): Deprecate gnu covariant extension. + 2004-10-31 Gabriel Dos Reis <gdr@integrable-solutions.net> Convert diagnostics to use quoting flag q 9/n diff --git a/gcc/cp/search.c b/gcc/cp/search.c index 68a42f2..9e6178e 100644 --- a/gcc/cp/search.c +++ b/gcc/cp/search.c @@ -1830,6 +1830,12 @@ check_final_overrider (tree overrider, tree basefn) over_return = non_reference (TREE_TYPE (over_type)); if (CLASS_TYPE_P (over_return)) fail = 2; + else + { + cp_warning_at ("deprecated covariant return type for %q#D", + overrider); + cp_warning_at (" overriding %q#D", basefn); + } } else fail = 2; diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 45653b1..a4cbb2f 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -9711,6 +9711,11 @@ parameters, as C++ demands. This feature has been removed, except where it is required for backwards compatibility @xref{Backwards Compatibility}. @end table +G++ allows a virtual function returning @samp{void *} to be overridden +by one returning a different pointer type. This extension to the +covariant return type rules is now deprecated and will be removed from a +future version. + The named return value extension has been deprecated, and is now removed from G++. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 994723e..3b08af5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-11-01 Nathan Sidwell <nathan@codesourcery.com> + + PR c++/18064 + * g++.old-deja/g++.mike/p811.C: Avoid covariant extension. + 2004-10-31 Mark Mitchell <mark@codesourcery.com> PR c++/15172 diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p811.C b/gcc/testsuite/g++.old-deja/g++.mike/p811.C index 7d15e9e..260c645 100644 --- a/gcc/testsuite/g++.old-deja/g++.mike/p811.C +++ b/gcc/testsuite/g++.old-deja/g++.mike/p811.C @@ -511,14 +511,14 @@ inline istream& WS(istream& str) { return ws(str); } class Y { public: Y() {} - virtual const char *stringify() = 0; + virtual const char *stringify() = 0; virtual char *stringify2() const = 0; // { dg-error "overriding" } }; class X: public Y { public: X(): Y() {} - char *stringify(); // { dg-error "candidate" } + const char *stringify(); // { dg-error "candidate" } const char *stringify2() const; // { dg-error "candidate|conflicting return type" } }; |