From: Andrew Pinski Date: Tue, 24 May 2005 19:06:20 +0000 (+0000) Subject: re PR c++/21645 (C++ ICE in cxx_types_compatible_p) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e777303ff4ac9b9f45830a433023c764d69bc433;p=gcc.git re PR c++/21645 (C++ ICE in cxx_types_compatible_p) 2005-05-24 Andrew Pinski PR C++/21645 * g++.dg/init/ctor5.C: New test. 2005-05-24 Andrew Pinski PR C++/21645 * optimize.c (update_cloned_parm): Copy the TYPE also from the original one. From-SVN: r100106 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 91a41c3408f..f15e1e92a3c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2005-05-24 Andrew Pinski + + PR C++/21645 + * optimize.c (update_cloned_parm): Copy the TYPE also from the + original one. + 2005-05-19 Jakub Jelinek PR c++/21495 diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c index 7ccfaffbf0d..bf9b22b63e9 100644 --- a/gcc/cp/optimize.c +++ b/gcc/cp/optimize.c @@ -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 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b742080db94..4a0a4439a18 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-05-24 Andrew Pinski + + PR C++/21645 + * g++.dg/init/ctor5.C: New test. + 2005-05-24 Ira Rosen * 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 index 00000000000..cc933188201 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/ctor5.C @@ -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) +{ +} +