aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/init.c15
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/g++.dg/torture/str_empty.C2
-rw-r--r--gcc/testsuite/g++.dg/warn/new1.C2
5 files changed, 14 insertions, 17 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 6e8a8b9..aa4659f 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2007-09-16 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/33124
+ * init.c (build_new): Remove warning for zero-element
+ allocations.
+
2007-09-16 Nathan Sidwell <nathan@codesourcery.com>
cp/
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index cafc721..e11d184 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -2173,21 +2173,6 @@ build_new (tree placement, tree type, tree nelts, tree init,
if (!build_expr_type_conversion (WANT_INT | WANT_ENUM, nelts, false))
pedwarn ("size in array new must have integral type");
nelts = cp_save_expr (cp_convert (sizetype, nelts));
- /* It is valid to allocate a zero-element array:
-
- [expr.new]
-
- When the value of the expression in a direct-new-declarator
- is zero, the allocation function is called to allocate an
- array with no elements. The pointer returned by the
- new-expression is non-null. [Note: If the library allocation
- function is called, the pointer returned is distinct from the
- pointer to any other object.]
-
- However, that is not generally useful, so we issue a
- warning. */
- if (integer_zerop (nelts))
- warning (0, "allocating zero-element array");
}
/* ``A reference cannot be created by the new operator. A reference
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1fea6a1..1c5209a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2007-09-16 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/33124
+ * g++.dg/warn/new1.C: Adjust.
+ * g++.dg/torture/str_empty.C: Likewise.
+
2007-09-16 Richard Sandiford <rsandifo@nildram.co.uk>
* gcc.target/mips/dse-1.c: New test.
diff --git a/gcc/testsuite/g++.dg/torture/str_empty.C b/gcc/testsuite/g++.dg/torture/str_empty.C
index 0a6aabf..e24f0b6 100644
--- a/gcc/testsuite/g++.dg/torture/str_empty.C
+++ b/gcc/testsuite/g++.dg/torture/str_empty.C
@@ -9,7 +9,7 @@ struct polynomial {
void spline_rep1 ()
{
- new polynomial[0]; // { dg-warning "allocating zero-element array" }
+ new polynomial[0]; // { dg-bogus "allocating zero-element array" }
}
diff --git a/gcc/testsuite/g++.dg/warn/new1.C b/gcc/testsuite/g++.dg/warn/new1.C
index 6b78368..b50b2c3 100644
--- a/gcc/testsuite/g++.dg/warn/new1.C
+++ b/gcc/testsuite/g++.dg/warn/new1.C
@@ -1,3 +1,3 @@
void f() {
- new int[0]; // { dg-warning "zero" }
+ new int[0]; // { dg-bogus "zero" }
}