From f74d2b776f9017c404f76c854a06661bc7183608 Mon Sep 17 00:00:00 2001 From: nathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 12 Apr 2001 07:42:17 +0000 Subject: [PATCH] cp: * method.c (make_thunk): Clear DECL_CLONED_FUNCTION. testsuite: * g++.old-deja/g++.other/crash40.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@41294 138bc75d-0d04-0410-961f-82ee72b054a4 --- 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 704c7fc5ec0d..1066de11c438 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -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 diff --git a/gcc/cp/method.c b/gcc/cp/method.c index 2f894846a80a..5839767375a5 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 40756355a7c3..36c2e53cbf83 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 index 000000000000..3af3f731a66a --- /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 <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); } -- GitLab