From: Volker Reichelt Date: Wed, 16 Aug 2006 21:35:18 +0000 (+0000) Subject: re PR c++/28593 (ICE on invalid operator new) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d5d1d25696cfec7bbc88ff565ad8f444116031ec;p=gcc.git re PR c++/28593 (ICE on invalid operator new) PR c++/28593 * init.c (build_new): Return early on invalid placement. * g++.dg/parse/new3.C: New test. From-SVN: r116191 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 53efac92540..7b08dd72033 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2006-08-16 Volker Reichelt + + PR c++/28593 + * init.c (build_new): Return early on invalid placement. + 2006-08-15 Lee Millward PR c++/28594 diff --git a/gcc/cp/init.c b/gcc/cp/init.c index c785308699f..ff6de3360e5 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -2063,7 +2063,7 @@ build_new (tree placement, tree type, tree nelts, tree init, tree orig_nelts; tree orig_init; - if (type == error_mark_node) + if (placement == error_mark_node || type == error_mark_node) return error_mark_node; orig_placement = placement; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 88c66dbc329..5d71321d72e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-08-16 Volker Reichelt + + PR c++/28593 + * g++.dg/parse/new3.C: New test. + 2006-08-15 Jerry DeLisle PR fortran/25828 diff --git a/gcc/testsuite/g++.dg/parse/new3.C b/gcc/testsuite/g++.dg/parse/new3.C new file mode 100644 index 00000000000..d8faed29493 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/new3.C @@ -0,0 +1,4 @@ +// PR c++/28593 +// { dg-do compile } + +void *p = new (::X; // { dg-error "declared|type-specifier" }