diff options
author | Jason Merrill <jason@redhat.com> | 2011-03-18 11:07:04 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2011-03-18 11:07:04 -0400 |
commit | e6baef836f11dd7273c258a41cbfc44f462e3828 (patch) | |
tree | 22180fc51591043f48d923f17662442d4ae7437c /gcc | |
parent | b4ef8aac30e7c17756d6a1ad8cbd6c914e960bb4 (diff) | |
download | gcc-e6baef836f11dd7273c258a41cbfc44f462e3828.zip gcc-e6baef836f11dd7273c258a41cbfc44f462e3828.tar.gz gcc-e6baef836f11dd7273c258a41cbfc44f462e3828.tar.bz2 |
re PR c++/48118 (g++ sometimes allows copying a volatile class)
PR c++/48118
* call.c (build_over_call): Don't skip ck_rvalue.
From-SVN: r171147
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/call.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/overload/volatile1.C | 14 |
4 files changed, 21 insertions, 6 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 51535f5..9578f1a 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2011-03-18 Jason Merrill <jason@redhat.com> + + PR c++/48118 + * call.c (build_over_call): Don't skip ck_rvalue. + 2011-03-17 Jason Merrill <jason@redhat.com> PR c++/47504 diff --git a/gcc/cp/call.c b/gcc/cp/call.c index d040ec8..93383c6 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -6168,12 +6168,6 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain) conv = convs[i]; - /* Don't make a copy here if build_call is going to. */ - if (conv->kind == ck_rvalue - && COMPLETE_TYPE_P (complete_type (type)) - && !TREE_ADDRESSABLE (type)) - conv = conv->u.next; - /* Warn about initializer_list deduction that isn't currently in the working draft. */ if (cxx_dialect > cxx98 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b9c7dd8..b0f4f53 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,7 @@ 2011-03-18 Jason Merrill <jason@redhat.com> + * g++.dg/overload/volatile1.C: New. + * g++.dg/opt/pr23372.C: New. * g++.dg/ext/attrib32.C: Expect errors on the two-names case. diff --git a/gcc/testsuite/g++.dg/overload/volatile1.C b/gcc/testsuite/g++.dg/overload/volatile1.C new file mode 100644 index 0000000..baf467d --- /dev/null +++ b/gcc/testsuite/g++.dg/overload/volatile1.C @@ -0,0 +1,14 @@ +// PR c++/48118 +// { dg-prune-output "note" } + +struct A { }; + +void f (A); // { dg-error "argument 1" } +void (*g)(A); + +int main() +{ + volatile A a; + f(a); // { dg-error "no match" } + g(a); // { dg-error "no match" } +} |