method.c (make_thunk): Clear DECL_CLONED_FUNCTION.
authorNathan Sidwell <nathan@codesourcery.com>
Thu, 12 Apr 2001 07:42:17 +0000 (07:42 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Thu, 12 Apr 2001 07:42:17 +0000 (07:42 +0000)
cp:
* method.c (make_thunk): Clear DECL_CLONED_FUNCTION.
testsuite:
* g++.old-deja/g++.other/crash40.C: New test.

From-SVN: r41294

gcc/cp/ChangeLog
gcc/cp/method.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.old-deja/g++.other/crash40.C [new file with mode: 0644]

index 704c7fc5ec0d8a269c40178817aef884654e8489..1066de11c438955c8e68e0fd15914fe8921e18ed 100644 (file)
@@ -1,3 +1,7 @@
+2001-04-12  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * method.c (make_thunk): Clear DECL_CLONED_FUNCTION.
+
 2001-04-11  Mark Mitchell  <mark@codesourcery.com>
 
        * optimize.c (maybe_clone_body): Copy DECL_NUM_STMTS from the
index 2f894846a80aa30ceec7308225e12af2f061812f..5839767375a5b33874b03a7484df7c4be06bb3c2 100644 (file)
@@ -363,6 +363,8 @@ make_thunk (function, delta, vcall_index, generate_with_vtable_p)
       DECL_SAVED_FUNCTION_DATA (thunk) = NULL;
       DECL_DESTRUCTOR_P (thunk) = 0;
       DECL_CONSTRUCTOR_P (thunk) = 0;
+      /* And neither is it a clone.  */
+      DECL_CLONED_FUNCTION (thunk) = NULL_TREE;
       DECL_EXTERNAL (thunk) = 1;
       DECL_ARTIFICIAL (thunk) = 1;
       /* Even if this thunk is a member of a local class, we don't
index 40756355a7c32aa244287aa36bfd7f9b4c1f49db..36c2e53cbf8319c0e27c5175def2ea9f1571782f 100644 (file)
@@ -1,3 +1,7 @@
+2001-04-12  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * g++.old-deja/g++.other/crash40.C: New test.
+
 2001-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * gcc.c-torture/execute/20010122-1.c: Fix declaration of alloca.
diff --git a/gcc/testsuite/g++.old-deja/g++.other/crash40.C b/gcc/testsuite/g++.old-deja/g++.other/crash40.C
new file mode 100644 (file)
index 0000000..3af3f73
--- /dev/null
@@ -0,0 +1,19 @@
+// Build don't link:
+// Copyright (C) 2001 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 11 April 2001 <nathan@codesourcery.com>
+// Origin: Theo Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
+
+// Bug 1917. We were considering thunks to clones to be clones. and
+// hence getting confused.
+
+struct A { virtual ~A(); };
+struct B { virtual ~B(); };
+
+struct C: public A,B {};
+
+template <class TYPE>
+inline TYPE
+sqr(const TYPE& x) {
+    return 1;
+}
+int f(const int t) { return sqr(t); }