From bbb53468cc1f912add359fa97567f3b0b54476f8 Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Thu, 12 Apr 2001 07:42:17 +0000 Subject: [PATCH] method.c (make_thunk): Clear DECL_CLONED_FUNCTION. 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 | 4 ++++ gcc/cp/method.c | 2 ++ gcc/testsuite/ChangeLog | 4 ++++ .../g++.old-deja/g++.other/crash40.C | 19 +++++++++++++++++++ 4 files changed, 29 insertions(+) create mode 100644 gcc/testsuite/g++.old-deja/g++.other/crash40.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 704c7fc5ec0..1066de11c43 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2001-04-12 Nathan Sidwell + + * method.c (make_thunk): Clear DECL_CLONED_FUNCTION. + 2001-04-11 Mark Mitchell * optimize.c (maybe_clone_body): Copy DECL_NUM_STMTS from the diff --git a/gcc/cp/method.c b/gcc/cp/method.c index 2f894846a80..5839767375a 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -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 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 40756355a7c..36c2e53cbf8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2001-04-12 Nathan Sidwell + + * g++.old-deja/g++.other/crash40.C: New test. + 2001-04-11 Kaveh R. Ghazi * 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 index 00000000000..3af3f731a66 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/crash40.C @@ -0,0 +1,19 @@ +// Build don't link: +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 11 April 2001 +// Origin: Theo Papadopoulo + +// 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 +inline TYPE +sqr(const TYPE& x) { + return 1; +} +int f(const int t) { return sqr(t); } -- 2.30.2