From: Jakub Jelinek Date: Wed, 4 Sep 2002 08:25:52 +0000 (+0200) Subject: decl.c (start_cleanup_fn): Clear interface_only before start_function, restore it... X-Git-Tag: releases/gcc-3.2.1~331 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a2122b281564425f63a41624c4ad2358a1f50833;p=thirdparty%2Fgcc.git decl.c (start_cleanup_fn): Clear interface_only before start_function, restore it afterwards. * decl.c (start_cleanup_fn): Clear interface_only before start_function, restore it afterwards. * g++.dg/other/cxa-atexit1.C: New test. From-SVN: r56789 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f21cf2a8d15a..f75f91f072d4 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2002-09-04 Jakub Jelinek + + * decl.c (start_cleanup_fn): Clear interface_only before + start_function, restore it afterwards. + 2002-09-01 Alexandre Oliva * parse.y (sizeof, alignof, typeof): New non-terminals to diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 82ec357bd9c2..105e7a0d0d57 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -8515,6 +8515,7 @@ static tree start_cleanup_fn () { static int counter = 0; + int old_interface_only = interface_only; int old_interface_unknown = interface_unknown; char name[32]; tree parmtypes; @@ -8526,6 +8527,7 @@ start_cleanup_fn () /* No need to mangle this. */ push_lang_context (lang_name_c); + interface_only = 0; interface_unknown = 1; /* Build the parameter-types. */ @@ -8567,6 +8569,7 @@ start_cleanup_fn () start_function (/*specs=*/NULL_TREE, fndecl, NULL_TREE, SF_PRE_PARSED); interface_unknown = old_interface_unknown; + interface_only = old_interface_only; pop_lang_context (); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 585df916285e..36a5ca380a87 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2002-09-04 Jakub Jelinek + + * g++.dg/other/cxa-atexit1.C: New test. + 2002-09-01 Jakub Jelinek * gcc.dg/typeof-1.c: New test. diff --git a/gcc/testsuite/g++.dg/other/cxa-atexit1.C b/gcc/testsuite/g++.dg/other/cxa-atexit1.C new file mode 100644 index 000000000000..a51f33401426 --- /dev/null +++ b/gcc/testsuite/g++.dg/other/cxa-atexit1.C @@ -0,0 +1,26 @@ +// { dg-do compile } +// { dg-options "-O2 -fuse-cxa-atexit" } + +# 1 "cxa-atexit1.C" +struct A +{ + struct B + { + B (); + ~B (); + }; +}; +static A::B b; +# 1 "cxa-atexit1.h" 1 +#pragma interface +template struct C +{ + ~C (void); +}; +struct D : public C +{ + D (void) : C () { } +}; +# 55 "cxa-atexit1.C" 2 + +// { dg-final { scan-assembler-not ".gnu.linkonce.t.__tcf_" } }