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 <jakub@redhat.com> 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.
This commit is contained in:
parent
4963eb7691
commit
b7b67732e2
2 changed files with 22 additions and 0 deletions
|
@ -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))
|
||||
{
|
||||
|
|
16
gcc/testsuite/g++.dg/warn/deprecated-20.C
Normal file
16
gcc/testsuite/g++.dg/warn/deprecated-20.C
Normal file
|
@ -0,0 +1,16 @@
|
|||
// PR c++/116678
|
||||
// { dg-do compile }
|
||||
// { dg-options "-Os -pedantic" }
|
||||
|
||||
struct S
|
||||
{
|
||||
[[deprecated]] S () { s = 1; } // { dg-bogus "'S::S\\\(\\\)' is deprecated" }
|
||||
S (int x) { s = x; } // { dg-warning "C\\\+\\\+11 attributes only available with" "" { target c++98_only } .-1 }
|
||||
~S () {}
|
||||
int s;
|
||||
};
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
}
|
Loading…
Add table
Reference in a new issue