From c07315202d597a3d1e04dda8552efee2f6776f59 Mon Sep 17 00:00:00 2001 From: mmitchel Date: Sat, 21 Aug 2004 01:31:27 +0000 Subject: [PATCH] PR c++/17121 * decl.c (expand_static_init): Use DECL_FUNCTION_SCOPE_P. PR c++/17121 * g++.dg/inherit/local2.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86353 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/decl.c | 2 +- gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/g++.dg/inherit/local1.C | 10 ++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/inherit/local1.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 2b794f0..c0f488e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2004-08-20 Mark Mitchell + + PR c++/17121 + * decl.c (expand_static_init): Use DECL_FUNCTION_SCOPE_P. + 2004-08-21 Joseph S. Myers PR c++/17120 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 36e83d9..d9a7449 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -5151,7 +5151,7 @@ expand_static_init (tree decl, tree init) && TYPE_HAS_TRIVIAL_DESTRUCTOR (TREE_TYPE (decl))) return; - if (! toplevel_bindings_p ()) + if (DECL_FUNCTION_SCOPE_P (decl)) { /* Emit code to perform this initialization but once. */ tree if_stmt; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d096a1b..2475629 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-08-20 Mark Mitchell + + PR c++/17121 + * g++.dg/inherit/local2.C: New test. + 2004-08-21 Joseph S. Myers PR c++/17120 @@ -5,6 +10,9 @@ 2004-08-20 Mark Mitchell + PR c++/17121 + * g++.dg/inherit/local2.C: New test. + * gcc.dg/darwin-longlong.c: Include . * gcc.dg/ppc-ldstruct.c: Likewise. * gcc.dg/ppc64-abi-2.c: Likewise. diff --git a/gcc/testsuite/g++.dg/inherit/local1.C b/gcc/testsuite/g++.dg/inherit/local1.C new file mode 100644 index 0000000..3cb196c --- /dev/null +++ b/gcc/testsuite/g++.dg/inherit/local1.C @@ -0,0 +1,10 @@ +// PR c++/17121 + +struct A { + virtual ~A() {} +}; + +void tsk_tsk() +{ + struct B : public A {}; +} -- 2.7.4