re PR c++/29185 (inconsistent warning: deleting array)
authorPaolo Carlini <paolo.carlini@oracle.com>
Wed, 23 May 2012 14:19:27 +0000 (14:19 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Wed, 23 May 2012 14:19:27 +0000 (14:19 +0000)
/cp
2012-05-23  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/29185
* decl2.c (delete_sanity): Extend 'deleting array' warning to
any array type.

/testsuite
2012-05-23  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/29185
* g++.dg/warn/delete-array-1.C: New.

From-SVN: r187801

gcc/cp/ChangeLog
gcc/cp/decl2.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/warn/delete-array-1.C [new file with mode: 0644]

index 391407fb9daa129dd1f41e4d98eba1dec7266c1a..c3d98418316b57f34136cf0c015245d1e73a5104 100644 (file)
@@ -1,3 +1,9 @@
+2012-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/29185
+       * decl2.c (delete_sanity): Extend 'deleting array' warning to
+       any array type.
+
 2012-05-21  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/51184
index c40b830a1aa7459ec17fbcbb5982a19a461ecc32..bf9ca333b3564dcec54781481d768db6b0a4dedd 100644 (file)
@@ -438,9 +438,8 @@ delete_sanity (tree exp, tree size, bool doing_vec, int use_global_delete,
     }
 
   /* An array can't have been allocated by new, so complain.  */
-  if (TREE_CODE (exp) == VAR_DECL
-      && TREE_CODE (TREE_TYPE (exp)) == ARRAY_TYPE)
-    warning (0, "deleting array %q#D", exp);
+  if (TREE_CODE (TREE_TYPE (exp)) == ARRAY_TYPE)
+    warning (0, "deleting array %q#E", exp);
 
   t = build_expr_type_conversion (WANT_POINTER, exp, true);
 
index 4934bd2e4fe97c3c48a50da6c6efac15940f5ec8..35dd366c5e650f4603daa6a4dd0a8b9a15c78720 100644 (file)
@@ -1,3 +1,8 @@
+2012-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/29185
+       * g++.dg/warn/delete-array-1.C: New.
+
 2012-05-23  Richard Guenther  <rguenther@suse.de>
 
        * gcc.dg/torture/pr39074-2.c: Adjust.
diff --git a/gcc/testsuite/g++.dg/warn/delete-array-1.C b/gcc/testsuite/g++.dg/warn/delete-array-1.C
new file mode 100644 (file)
index 0000000..c3af713
--- /dev/null
@@ -0,0 +1,11 @@
+// PR c++/29185
+
+int a [1];
+struct S { int a [1]; } s;
+
+void foo (S *p)
+{
+  delete a;    // { dg-warning "deleting array" }
+  delete s.a;  // { dg-warning "deleting array" }
+  delete p->a; // { dg-warning "deleting array" }
+}