From: Jakub Jelinek Date: Wed, 7 May 2014 16:03:49 +0000 (+0200) Subject: backport: re PR c++/58325 (Spurious unused-but-set-variable warning on delete[] of... X-Git-Tag: releases/gcc-4.7.4~104 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=837b330651e6d13ebed79fe116f64aa0f50c7719;p=thirdparty%2Fgcc.git backport: re PR c++/58325 (Spurious unused-but-set-variable warning on delete[] of volatile pointer) Backported from mainline 2013-09-09 Jakub Jelinek 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 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d22e15327d2d..549d28d6fdb1 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,4 +1,13 @@ +2014-05-07 Jakub Jelinek + + Backported from mainline + 2013-09-09 Jakub Jelinek + + PR c++/58325 + * init.c (build_vec_delete): Call mark_rvalue_use on base. + 2014-02-26 Fabien Chêne + PR c++/37140 * parser.c (cp_parser_nonclass_name): Call strip_using_decl and move the code handling dependent USING_DECLs... diff --git a/gcc/cp/init.c b/gcc/cp/init.c index bb0e618fbeef..4e4b613dd521 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -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); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7dcdffebbf8e..b93701aa74f5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-09-09 Jakub Jelinek + + PR c++/58325 + * g++.dg/warn/Wunused-var-21.C: New test. + 2013-08-30 Jakub Jelinek 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 index 000000000000..d279e5980330 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wunused-var-21.C @@ -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; +}