diff options
author | Jakub Jelinek <jakub@redhat.com> | 2013-09-09 19:12:15 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2013-09-09 19:12:15 +0200 |
commit | 3c784bca03923af11ed253f481899f164024d9d8 (patch) | |
tree | fd4d357735004e7e56864dc2bc61de5c4787dd48 /gcc | |
parent | 28fd0ba2d17a09ddf5106f1e60c475a93fba3090 (diff) | |
download | gcc-3c784bca03923af11ed253f481899f164024d9d8.zip gcc-3c784bca03923af11ed253f481899f164024d9d8.tar.gz gcc-3c784bca03923af11ed253f481899f164024d9d8.tar.bz2 |
re PR c++/58325 (Spurious unused-but-set-variable warning on delete[] of volatile pointer)
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: r202411
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/init.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wunused-var-21.C | 31 |
4 files changed, 40 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index bc9c498..cca0229 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2013-09-09 Jakub Jelinek <jakub@redhat.com> + + PR c++/58325 + * init.c (build_vec_delete): Call mark_rvalue_use on base. + 2013-09-09 Paolo Carlini <paolo.carlini@oracle.com> PR c++/43452 diff --git a/gcc/cp/init.c b/gcc/cp/init.c index df7dc7d..8fabdcd 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -4128,6 +4128,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 befd28d..7da1444 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2013-09-09 Jakub Jelinek <jakub@redhat.com> + PR c++/58325 + * g++.dg/warn/Wunused-var-21.C: New test. + PR tree-optimization/58364 * gcc.c-torture/execute/pr58364.c: New test. 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 0000000..d279e59 --- /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; +} |