aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/init.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/parse/new4.C7
4 files changed, 19 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 3c2ff36..f82e4f5 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2006-10-03 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/29291
+ * init.c (build_new): Check for invalid init.
+
2006-10-02 Mark Mitchell <mark@codesourcery.com>
PR c++/29226
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index 8faa03d..0c85c0f 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -2075,7 +2075,8 @@ build_new (tree placement, tree type, tree nelts, tree init,
tree orig_nelts;
tree orig_init;
- if (placement == error_mark_node || type == error_mark_node)
+ if (placement == error_mark_node || type == error_mark_node
+ || init == error_mark_node)
return error_mark_node;
orig_placement = placement;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0c1d116..1e7bf01 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-10-03 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/29291
+ * g++.dg/parse/new4.C: New test.
+
2006-10-03 Uros Bizjak <uros@kss-loka.si>
* gcc-dg/pthread-init-common.h: Define _GNU_SOURCE. Add tests for
diff --git a/gcc/testsuite/g++.dg/parse/new4.C b/gcc/testsuite/g++.dg/parse/new4.C
new file mode 100644
index 0000000..34bd232
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/new4.C
@@ -0,0 +1,7 @@
+// PR c++/29291
+// { dg-do compile }
+
+template<int> void foo()
+{
+ new int(; // { dg-error "before" }
+}