aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Reichelt <reichelt@igpm.rwth-aachen.de>2006-08-16 21:35:18 +0000
committerVolker Reichelt <reichelt@gcc.gnu.org>2006-08-16 21:35:18 +0000
commitd5d1d25696cfec7bbc88ff565ad8f444116031ec (patch)
tree449eefe1360003191dff39367b17bd7897623c48
parentf074ff6cc07a8b34a63c2c469d38130aceb87408 (diff)
downloadgcc-d5d1d25696cfec7bbc88ff565ad8f444116031ec.zip
gcc-d5d1d25696cfec7bbc88ff565ad8f444116031ec.tar.gz
gcc-d5d1d25696cfec7bbc88ff565ad8f444116031ec.tar.bz2
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
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/init.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/parse/new3.C4
4 files changed, 15 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 53efac9..7b08dd7 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2006-08-16 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/28593
+ * init.c (build_new): Return early on invalid placement.
+
2006-08-15 Lee Millward <lee.millward@codesourcery.com>
PR c++/28594
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index c785308..ff6de33 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 88c66db..5d71321 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-08-16 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/28593
+ * g++.dg/parse/new3.C: New test.
+
2006-08-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
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 0000000..d8faed2
--- /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" }