From: jason Date: Wed, 29 Jan 2014 13:40:49 +0000 (+0000) Subject: PR c++/59315 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4b136559abb3f875a376e26f4c4c5d1109256308;p=thirdparty%2Fgcc.git PR c++/59315 * decl.c (cxx_maybe_build_cleanup): Call mark_used. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@207236 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3ed0ef8da7fc..f2ff37abb833 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 e14e401d0fce..10f4e647cfc6 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 31009094352b..2d00dda3faaa 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();