From 6ad3af54074be1592d131813195be3c331c454d1 Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 7 May 2014 16:03:49 +0000 Subject: [PATCH] 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210172 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 9 +++++++++ gcc/cp/init.c | 1 + gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/warn/Wunused-var-21.C | 31 ++++++++++++++++++++++++++++++ 4 files changed, 46 insertions(+) create mode 100644 gcc/testsuite/g++.dg/warn/Wunused-var-21.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d22e15327d2..549d28d6fdb 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 bb0e618fbee..4e4b613dd52 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 7dcdffebbf8..b93701aa74f 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 00000000000..d279e598033 --- /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; +} -- 2.11.0