From 7fd7263dc9212bcf694e951327a9b33872158d37 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 28 Jun 2010 22:12:31 +0200 Subject: [PATCH] =?UTF-8?q?re=20PR=20c++/44682=20(warning:=20variable=20?= =?UTF-8?q?=E2=80=98x=E2=80=99=20set=20but=20not=20used)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR c++/44682 * class.c (build_base_path): If want_pointer, call mark_rvalue_use on expr. * g++.dg/warn/Wunused-var-14.C: New test. From-SVN: r161511 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/class.c | 2 ++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/warn/Wunused-var-14.C | 17 +++++++++++++++++ 4 files changed, 30 insertions(+) create mode 100644 gcc/testsuite/g++.dg/warn/Wunused-var-14.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3b5f1bd82de..a7df7b8b1c6 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2010-06-28 Jakub Jelinek + + PR c++/44682 + * class.c (build_base_path): If want_pointer, call mark_rvalue_use + on expr. + 2010-06-28 Steven Bosscher * init.c: Do not include except.h. diff --git a/gcc/cp/class.c b/gcc/cp/class.c index f945923ddc4..51f749f61b0 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -283,6 +283,8 @@ build_base_path (enum tree_code code, if (!want_pointer) /* This must happen before the call to save_expr. */ expr = cp_build_unary_op (ADDR_EXPR, expr, 0, tf_warning_or_error); + else + mark_rvalue_use (expr); offset = BINFO_OFFSET (binfo); fixed_type_p = resolves_to_fixed_type_p (expr, &nonnull); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5f0ea3fbd1e..e3558942969 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-06-28 Jakub Jelinek + + PR c++/44682 + * g++.dg/warn/Wunused-var-14.C: New test. + 2010-06-28 Tobias Burnus PR fortran/43298 diff --git a/gcc/testsuite/g++.dg/warn/Wunused-var-14.C b/gcc/testsuite/g++.dg/warn/Wunused-var-14.C new file mode 100644 index 00000000000..a552b56dad1 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wunused-var-14.C @@ -0,0 +1,17 @@ +// PR c++/44682 +// { dg-do compile } +// { dg-options "-Wunused" } + +struct S { virtual ~S () {} }; +struct T { virtual ~T () {} }; +struct U : S, T {}; + +void f (U &); + +void +g (void *v) +{ + T *t = static_cast (v); + U *u = static_cast (t); + f (*u); +}