re PR c++/9791 (-Woverloaded-virtual reports hiding of destructor)
authorMark Mitchell <mark@codesourcery.com>
Thu, 6 Mar 2003 20:06:29 +0000 (20:06 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Thu, 6 Mar 2003 20:06:29 +0000 (20:06 +0000)
PR c++/9791
* class.c (get_basefndecls): Use lookup_fnfields_1.

PR c++/9791
* g++.dg/warn/Woverloaded-1.C: New test.

From-SVN: r63899

gcc/cp/ChangeLog
gcc/cp/class.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/warn/Woverloaded-1.C [new file with mode: 0644]

index 8668f7889ad03f86d3b0f4f2472b6b0ba87f78c8..7d62350a0a41cc554fcbcaf3d68837bf3482c8c4 100644 (file)
@@ -1,3 +1,8 @@
+2003-03-06  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/9791
+       * class.c (get_basefndecls): Use lookup_fnfields_1.
+
 2003-03-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
 
        PR c++/9188
index 433e4266cba995c574d974ae03e10f164e079709..6b89becf176399943c53f24ab12f7df43be9f4f3 100644 (file)
@@ -2524,11 +2524,19 @@ get_basefndecls (tree name, tree t)
   int n_baseclasses = CLASSTYPE_N_BASECLASSES (t);
   int i;
 
-  for (methods = TYPE_METHODS (t); methods; methods = TREE_CHAIN (methods))
-    if (TREE_CODE (methods) == FUNCTION_DECL
-       && DECL_VINDEX (methods) != NULL_TREE
-       && DECL_NAME (methods) == name)
-      base_fndecls = tree_cons (NULL_TREE, methods, base_fndecls);
+  /* Find virtual functions in T with the indicated NAME.  */
+  i = lookup_fnfields_1 (t, name);
+  if (i != -1)
+    for (methods = TREE_VEC_ELT (CLASSTYPE_METHOD_VEC (t), i);
+        methods;
+        methods = OVL_NEXT (methods))
+      {
+       tree method = OVL_CURRENT (methods);
+
+       if (TREE_CODE (method) == FUNCTION_DECL
+           && DECL_VINDEX (method))
+         base_fndecls = tree_cons (NULL_TREE, method, base_fndecls);
+      }
 
   if (base_fndecls)
     return base_fndecls;
index ed95cb8490814ab350c347a974e7da43f08e4d03..1b7c6d38bb6681616f9673dd6c3d6cad36c34c45 100644 (file)
@@ -1,3 +1,8 @@
+2003-03-06  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/9791
+       * g++.dg/warn/Woverloaded-1.C: New test.
+
 Wed Mar  5 23:18:11 CET 2003  Jan Hubicka  <jh@suse.cz>
 
        * gcc.dg/i386-local2.c: New.
diff --git a/gcc/testsuite/g++.dg/warn/Woverloaded-1.C b/gcc/testsuite/g++.dg/warn/Woverloaded-1.C
new file mode 100644 (file)
index 0000000..65a408b
--- /dev/null
@@ -0,0 +1,17 @@
+/* { dg-options "-Woverloaded-virtual" } */
+
+class Base {
+public:
+  virtual ~Base() {
+  }
+};
+
+class Derived: public Base {
+public:
+  int Base() { // There should be no error here.
+    return 5;
+  }
+};
+
+int main() {
+}