OSDN Git Service

2005-05-24 Andrew Pinski <pinskia@physics.uc.edu>
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 24 May 2005 19:06:20 +0000 (19:06 +0000)
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 24 May 2005 19:06:20 +0000 (19:06 +0000)
        PR C++/21645
        * g++.dg/init/ctor5.C: New test.

2005-05-24  Andrew Pinski  <pinskia@physics.uc.edu>

        PR C++/21645
        * optimize.c (update_cloned_parm): Copy the TYPE also from the
        original one.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@100106 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/optimize.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/init/ctor5.C [new file with mode: 0644]

index 91a41c3..f15e1e9 100644 (file)
@@ -1,3 +1,9 @@
+2005-05-24  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR C++/21645
+       * optimize.c (update_cloned_parm): Copy the TYPE also from the
+       original one.
+
 2005-05-19  Jakub Jelinek  <jakub@redhat.com>
 
        PR c++/21495
index 7ccfaff..bf9b22b 100644 (file)
@@ -68,6 +68,7 @@ update_cloned_parm (tree parm, tree cloned_parm)
   /* The name may have changed from the declaration.  */
   DECL_NAME (cloned_parm) = DECL_NAME (parm);
   DECL_SOURCE_LOCATION (cloned_parm) = DECL_SOURCE_LOCATION (parm);
+  TREE_TYPE (cloned_parm) = TREE_TYPE (parm);
 }
 
 /* FN is a function that has a complete body.  Clone the body as
index b742080..4a0a443 100644 (file)
@@ -1,3 +1,8 @@
+2005-05-24  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR C++/21645
+       * g++.dg/init/ctor5.C: New test.
+
 2005-05-24  Ira Rosen  <irar@il.ibm.com>
 
        * gcc.dg/vect/vect-none.c: Split into vect-106.c, vect-107.c,
diff --git a/gcc/testsuite/g++.dg/init/ctor5.C b/gcc/testsuite/g++.dg/init/ctor5.C
new file mode 100644 (file)
index 0000000..cc93318
--- /dev/null
@@ -0,0 +1,17 @@
+//  PR C++/21645
+//  We were crashing because we forgot to update the type for
+//  the cloned argument for the cloned ctor.
+
+struct color {
+  ~color();
+};
+struct style {
+  color col;
+  style (color);
+};
+
+style::style(color c)
+  : col(c)
+{
+}
+