struct base { virtual void foo() = 0; }; struct d1 : public virtual base { virtual void foo() {} }; struct d2 : public virtual base { virtual void foo() {} }; struct der : public d1, public d2 { }; gets you: ~/ootbc/members/src$ g++ foo.cc foo.cc:4: error: no unique final overrider for `virtual void base::foo()' in `der' foo.cc:4: error: no unique final overrider for `virtual void base::foo()' in `der' foo.cc:4: error: no unique final overrider for `virtual void base::foo()' in `der' foo.cc:4: error: no unique final overrider for `virtual void base::foo()' in `der'
Confirmed, a regression from 3.2.3.
Moving to 4.0.2 pre Mark.
Subject: Bug 21983 CVSROOT: /cvs/gcc Module name: gcc Changes by: jakub@gcc.gnu.org 2005-09-22 16:34:59 Modified files: gcc/cp : ChangeLog class.c gcc/testsuite : ChangeLog Added files: gcc/testsuite/g++.dg/warn: pr21983.C Log message: PR c++/21983 * class.c (find_final_overrider): Move diagnostic about no unique final overrider to... (update_vtable_entry_for_fn): ... here. * g++.dg/warn/pr21983.C: New test. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&r1=1.4900&r2=1.4901 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/class.c.diff?cvsroot=gcc&r1=1.732&r2=1.733 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.6095&r2=1.6096 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/warn/pr21983.C.diff?cvsroot=gcc&r1=NONE&r2=1.1
Fixed for 4.1.0.
Subject: Bug 21983 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-4_0-branch Changes by: jakub@gcc.gnu.org 2005-09-29 16:09:43 Modified files: gcc/cp : ChangeLog gcc/testsuite : ChangeLog gcc/cp : class.c Added files: gcc/testsuite/g++.dg/warn: pr21983.C Log message: PR c++/21983 * class.c (find_final_overrider): Move diagnostic about no unique final overrider to... (update_vtable_entry_for_fn): ... here. * g++.dg/warn/pr21983.C: New test. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.4648.2.110&r2=1.4648.2.111 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.5084.2.414&r2=1.5084.2.415 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/class.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.707.2.4&r2=1.707.2.5 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/warn/pr21983.C.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.8.1
Fixed.
Subject: Bug 21983 Author: jakub Date: Wed Nov 23 13:53:15 2005 New Revision: 107420 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=107420 Log: PR c++/21983 * class.c (find_final_overrider): Move diagnostic about no unique final overrider to... (update_vtable_entry_for_fn): ... here. * g++.dg/warn/pr21983.C: New test. Added: branches/gcc-3_4-branch/gcc/testsuite/g++.dg/warn/pr21983.C Modified: branches/gcc-3_4-branch/gcc/cp/ChangeLog branches/gcc-3_4-branch/gcc/cp/class.c branches/gcc-3_4-branch/gcc/testsuite/ChangeLog