]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR c++/58325 (Spurious unused-but-set-variable warning on delete[] of...
authorJakub Jelinek <jakub@redhat.com>
Wed, 7 May 2014 16:03:49 +0000 (18:03 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 7 May 2014 16:03:49 +0000 (18:03 +0200)
Backported from mainline
2013-09-09  Jakub Jelinek  <jakub@redhat.com>

PR c++/58325
* init.c (build_vec_delete): Call mark_rvalue_use on base.

* g++.dg/warn/Wunused-var-21.C: New test.

From-SVN: r210172

gcc/cp/ChangeLog
gcc/cp/init.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/warn/Wunused-var-21.C [new file with mode: 0644]

index d22e15327d2d053affe2c9d7434903649f8d48ec..549d28d6fdb1c11c563fe9da41de1bba9e57714b 100644 (file)
@@ -1,4 +1,13 @@
+2014-05-07  Jakub Jelinek  <jakub@redhat.com>
+
+       Backported from mainline
+       2013-09-09  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/58325
+       * init.c (build_vec_delete): Call mark_rvalue_use on base.
+
 2014-02-26  Fabien ChĂȘne  <fabien@gcc.gnu.org>
+
         PR c++/37140
         * parser.c (cp_parser_nonclass_name): Call strip_using_decl and
        move the code handling dependent USING_DECLs...
index bb0e618fbeef26baf5360b30d82388a4692e7a80..4e4b613dd52177ab9cb49d448b7a8d2068169de9 100644 (file)
@@ -3915,6 +3915,7 @@ build_vec_delete (tree base, tree maxindex,
       tree cookie_addr;
       tree size_ptr_type = build_pointer_type (sizetype);
 
+      base = mark_rvalue_use (base);
       if (TREE_SIDE_EFFECTS (base))
        {
          base_init = get_target_expr (base);
index 7dcdffebbf8e2c44b10fbe7a6ea3a0db3698dbb4..b93701aa74f5eb708094f60226c4ada9fb1698f6 100644 (file)
@@ -1,6 +1,11 @@
 2014-05-07  Jakub Jelinek  <jakub@redhat.com>
 
        Backported from mainline
+       2013-09-09  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/58325
+       * g++.dg/warn/Wunused-var-21.C: New test.
+
        2013-08-30  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/58277
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-var-21.C b/gcc/testsuite/g++.dg/warn/Wunused-var-21.C
new file mode 100644 (file)
index 0000000..d279e59
--- /dev/null
@@ -0,0 +1,31 @@
+// PR c++/58325
+// { dg-do compile }
+// { dg-options "-Wunused" }
+
+void
+f1 ()
+{
+  int *volatile a = new int[1];
+  delete[] a;
+}
+
+void
+f2 ()
+{
+  int *b = new int[1];
+  delete[] b;
+}
+
+void
+f3 ()
+{
+  int *volatile c = new int;
+  delete c;
+}
+
+void
+f4 ()
+{
+  int *d = new int;
+  delete d;
+}