From b7b67732e20217196f2a13a10fc3df4605b2b2ab Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 13 Sep 2024 16:13:01 +0200 Subject: c++: Don't emit deprecated/unavailable attribute diagnostics when creating cdtor thunks [PR116678] Another spot where we mark_used a function (in this case ctor or dtor) even when it is just artificially used inside of thunks (emitted on mingw with -Os for the testcase). 2024-09-13 Jakub Jelinek PR c++/116678 * optimize.cc: Include decl.h. (maybe_thunk_body): Temporarily change deprecated_state to UNAVAILABLE_DEPRECATED_SUPPRESS. * g++.dg/warn/deprecated-20.C: New test. --- gcc/cp/optimize.cc | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'gcc/cp/optimize.cc') diff --git a/gcc/cp/optimize.cc b/gcc/cp/optimize.cc index b8791d8..8429d85 100644 --- a/gcc/cp/optimize.cc +++ b/gcc/cp/optimize.cc @@ -23,6 +23,7 @@ along with GCC; see the file COPYING3. If not see #include "coretypes.h" #include "target.h" #include "cp-tree.h" +#include "decl.h" #include "stringpool.h" #include "cgraph.h" #include "debug.h" @@ -287,6 +288,11 @@ maybe_thunk_body (tree fn, bool force) if (ctor_omit_inherited_parms (fns[0])) return 0; + /* Don't diagnose deprecated or unavailable cdtors just because they + have thunks emitted for them. */ + auto du = make_temp_override (deprecated_state, + UNAVAILABLE_DEPRECATED_SUPPRESS); + DECL_ABSTRACT_P (fn) = false; if (!DECL_WEAK (fn)) { -- cgit v1.1