From ff47d09463cbc4e0aaec3233c3542a7aa1eea1ef Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Mon, 7 Feb 2000 23:41:01 +0000 Subject: [PATCH] decl.c (store_parm_decls): Don't build cleanups for parameters while processing_template_decl. * decl.c (store_parm_decls): Don't build cleanups for parameters while processing_template_decl. From-SVN: r31842 --- gcc/cp/ChangeLog | 5 ++++ gcc/cp/decl.c | 4 +++- gcc/testsuite/g++.old-deja/g++.pt/codegen1.C | 24 ++++++++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/codegen1.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c5fcff46f68..82faae374ca 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2000-02-07 Mark Mitchell + + * decl.c (store_parm_decls): Don't build cleanups for parameters + while processing_template_decl. + 2000-02-07 Jason Merrill * cp-tree.h (struct saved_scope): Add incomplete field. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 0575e487b35..0389234e432 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -13409,7 +13409,9 @@ store_parm_decls () else cp_error ("parameter `%D' declared void", parm); - cleanup = maybe_build_cleanup (parm); + cleanup = (processing_template_decl + ? NULL_TREE + : maybe_build_cleanup (parm)); if (cleanup) cleanups = tree_cons (parm, cleanup, cleanups); diff --git a/gcc/testsuite/g++.old-deja/g++.pt/codegen1.C b/gcc/testsuite/g++.old-deja/g++.pt/codegen1.C new file mode 100644 index 00000000000..f9a39c0a314 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/codegen1.C @@ -0,0 +1,24 @@ +// Build don't link: +// Origin: Mark Mitchell + +int i; + +struct S +{ + ~S () + { + } +}; + +template +void f (T, S) +{ + i = 0; +} + +int main () +{ + i = 1; + f (3, S ()); + return i; +} -- 2.30.2