diff options
author | Jason Merrill <jason@redhat.com> | 2009-07-24 23:57:20 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2009-07-24 23:57:20 -0400 |
commit | 67a6e8167985001be8a50485a8cd8a0d0355a363 (patch) | |
tree | a1321c242570af678195bae067b31b4c26c4980e /gcc | |
parent | 05b5c4e8742e5deba247f5a68eec43b13e88ce8c (diff) | |
download | gcc-67a6e8167985001be8a50485a8cd8a0d0355a363.zip gcc-67a6e8167985001be8a50485a8cd8a0d0355a363.tar.gz gcc-67a6e8167985001be8a50485a8cd8a0d0355a363.tar.bz2 |
Core issue 901
Core issue 901
* libsupc++/vec.cc (__cxa_vec_new2, __cxa_vec_new3): Handle NULL
dealloc.
* call.c (build_op_delete_call): If this is for a new-expression
and the op delete is deleted, do nothing.
From-SVN: r150073
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/call.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/defaulted11.C | 15 |
4 files changed, 25 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 6bb4a57..2ee951c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2009-07-24 Jason Merrill <jason@redhat.com> + Core issue 901 + * call.c (build_op_delete_call): If this is for a new-expression + and the op delete is deleted, do nothing. + Core issue 702 * call.c (compare_ics): Give list-initialization of std::init_list priority over conversion to scalar, too. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index d396aff..0254ecb 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -4595,6 +4595,10 @@ build_op_delete_call (enum tree_code code, tree addr, tree size, if (DECL_CLASS_SCOPE_P (fn)) perform_or_defer_access_check (TYPE_BINFO (type), fn, fn); + /* Core issue 901: It's ok to new a type with deleted delete. */ + if (DECL_DELETED_FN (fn) && alloc_fn) + return NULL_TREE; + if (placement) { /* The placement args might not be suitable for overload diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ea7a034..00dbba7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,7 @@ 2009-07-24 Jason Merrill <jason@redhat.com> + * g++.dg/cpp0x/defaulted11.C: New. + * g++.dg/cpp0x/initlist23.C: New. 2009-07-24 Janus Weil <janus@gcc.gnu.org> diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted11.C b/gcc/testsuite/g++.dg/cpp0x/defaulted11.C new file mode 100644 index 0000000..b9bed7e --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/defaulted11.C @@ -0,0 +1,15 @@ +// Core issue 901 +// { dg-options "-std=c++0x" } + +struct A +{ + A(); ~A(); + void operator delete (void *) = delete; + void operator delete[] (void *) = delete; +}; + +int main() +{ + A* ap = new A; + ap = new A[2]; +} |