From: jason Date: Fri, 6 Nov 2009 04:32:13 +0000 (+0000) Subject: PR c++/34180 X-Git-Url: http://git.sourceforge.jp/view?a=commitdiff_plain;h=2d5b6caa03ee5202fb8966f41341cddc9d024ab3;p=pf3gnuchains%2Fgcc-fork.git PR c++/34180 * method.c (do_build_copy_constructor): Don't drop cv-quals from the field type. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@153960 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 98cca71b56c..e909ba22396 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2009-11-05 Jason Merrill + PR c++/34180 + * method.c (do_build_copy_constructor): Don't drop cv-quals from + the field type. + PR c++/7046 * class.c (finish_struct): Store maximum_field_alignment in TYPE_PRECISION. diff --git a/gcc/cp/method.c b/gcc/cp/method.c index f13d99df20f..47f9e424dbd 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -622,6 +622,7 @@ do_build_copy_constructor (tree fndecl) if (DECL_MUTABLE_P (field)) quals &= ~TYPE_QUAL_CONST; + quals |= TYPE_QUALS (expr_type); expr_type = cp_build_qualified_type (expr_type, quals); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6d1786aa17b..2aba6077d22 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2009-11-05 Jason Merrill + PR c++/34180 + * g++.dg/init/synth2.C: New. + PR c++/7046 * g++.dg/abi/pragma-pack1.C: New. diff --git a/gcc/testsuite/g++.dg/init/synth2.C b/gcc/testsuite/g++.dg/init/synth2.C new file mode 100644 index 00000000000..795ce42893c --- /dev/null +++ b/gcc/testsuite/g++.dg/init/synth2.C @@ -0,0 +1,17 @@ +// PR c++/34180 + +struct G { + G(); // { dg-message "" "candidate" } + G(G&); // { dg-message "" "candidate" } +}; + +class A +{ // { dg-error "no match" } + const G g; +}; + +int main() +{ + A a; + A b = a; // { dg-message "required here" } +}