]> gcc.gnu.org Git - gcc.git/commitdiff
decl.c (store_parm_decls): Don't build cleanups for parameters while processing_templ...
authorMark Mitchell <mark@codesourcery.com>
Mon, 7 Feb 2000 23:41:01 +0000 (23:41 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Mon, 7 Feb 2000 23:41:01 +0000 (23:41 +0000)
* decl.c (store_parm_decls): Don't build cleanups for parameters
while processing_template_decl.

From-SVN: r31842

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/testsuite/g++.old-deja/g++.pt/codegen1.C [new file with mode: 0644]

index c5fcff46f686a2875081014caf670e0b88953a6e..82faae374ca804616d5e31bf2430c96b7a2fa5c4 100644 (file)
@@ -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.
index 0575e487b35bd7c4182bf8e113e7cb55246464b6..0389234e4329e208b2ca76c3773a2b07f08b18a7 100644 (file)
@@ -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 (file)
index 0000000..f9a39c0
--- /dev/null
@@ -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;
+}
This page took 0.100806 seconds and 5 git commands to generate.