From dc9e1b866ba338e7d1c52433e271cfd0d8d2c76f Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Wed, 29 Jan 2014 08:40:49 -0500 Subject: re PR c++/59315 (g++.dg/warn/Wunused-3.C FAILs with -fno-use-cxa-atexit) PR c++/59315 * decl.c (cxx_maybe_build_cleanup): Call mark_used. From-SVN: r207236 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/decl.c | 7 +++++++ gcc/testsuite/g++.dg/warn/Wunused-3.C | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3ed0ef8..f2ff37a 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2014-01-29 Jason Merrill + + PR c++/59315 + * decl.c (cxx_maybe_build_cleanup): Call mark_used. + 2014-01-29 Paolo Carlini PR c++/58702 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index e14e401..10f4e64 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -14353,6 +14353,13 @@ cxx_maybe_build_cleanup (tree decl, tsubst_flags_t complain) destructor call instead. */ if (cleanup != NULL && EXPR_P (cleanup)) SET_EXPR_LOCATION (cleanup, UNKNOWN_LOCATION); + + if (cleanup + && !lookup_attribute ("warn_unused", TYPE_ATTRIBUTES (TREE_TYPE (decl)))) + /* Treat objects with destructors as used; the destructor may do + something substantive. */ + mark_used (decl); + return cleanup; } diff --git a/gcc/testsuite/g++.dg/warn/Wunused-3.C b/gcc/testsuite/g++.dg/warn/Wunused-3.C index 3100909..2d00dda 100644 --- a/gcc/testsuite/g++.dg/warn/Wunused-3.C +++ b/gcc/testsuite/g++.dg/warn/Wunused-3.C @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-Wunused -O" } +// { dg-options "-Wunused -O -fno-use-cxa-atexit" } void do_cleanups(); -- cgit v1.1