diff options
author | Jason Merrill <jason@redhat.com> | 2009-11-05 23:32:13 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2009-11-05 23:32:13 -0500 |
commit | 11f18e1dafa5d79dba18bc10523deb6307b201c4 (patch) | |
tree | 7961fa1b392efb3a2803ad33f2c7e0aa30cb3dd9 /gcc | |
parent | 040ca4b38fd75538442804d77b96f27df21fbd8f (diff) | |
download | gcc-11f18e1dafa5d79dba18bc10523deb6307b201c4.zip gcc-11f18e1dafa5d79dba18bc10523deb6307b201c4.tar.gz gcc-11f18e1dafa5d79dba18bc10523deb6307b201c4.tar.bz2 |
re PR c++/34180 (Default copy constructor copies const auto_ptr members)
PR c++/34180
* method.c (do_build_copy_constructor): Don't drop cv-quals from
the field type.
From-SVN: r153960
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/method.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/init/synth2.C | 17 |
4 files changed, 25 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 98cca71..e909ba2 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2009-11-05 Jason Merrill <jason@redhat.com> + 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 f13d99d..47f9e42 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 6d1786a..2aba607 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2009-11-05 Jason Merrill <jason@redhat.com> + 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 0000000..795ce42 --- /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" } +} |