diff options
author | Mark Mitchell <mark@codesourcery.com> | 2000-02-07 23:41:01 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2000-02-07 23:41:01 +0000 |
commit | ff47d09463cbc4e0aaec3233c3542a7aa1eea1ef (patch) | |
tree | 068e661efd5baf17c3da20f148ea9802b3e50233 | |
parent | de9127c1b718aa3211aaa6d573791cf3077cfaba (diff) | |
download | gcc-ff47d09463cbc4e0aaec3233c3542a7aa1eea1ef.zip gcc-ff47d09463cbc4e0aaec3233c3542a7aa1eea1ef.tar.gz gcc-ff47d09463cbc4e0aaec3233c3542a7aa1eea1ef.tar.bz2 |
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
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/codegen1.C | 24 |
3 files changed, 32 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c5fcff4..82faae3 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2000-02-07 Mark Mitchell <mark@codesourcery.com> + + * decl.c (store_parm_decls): Don't build cleanups for parameters + while processing_template_decl. + 2000-02-07 Jason Merrill <jason@casey.cygnus.com> * cp-tree.h (struct saved_scope): Add incomplete field. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 0575e48..0389234 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 0000000..f9a39c0 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/codegen1.C @@ -0,0 +1,24 @@ +// Build don't link: +// Origin: Mark Mitchell <mark@codesourcery.com> + +int i; + +struct S +{ + ~S () + { + } +}; + +template <class T> +void f (T, S) +{ + i = 0; +} + +int main () +{ + i = 1; + f (3, S ()); + return i; +} |