public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/106847] New: deprecated class data member makes the class generate diagnostics even when the member is not used
@ 2022-09-06 10:33 avi at scylladb dot com
2022-09-06 10:33 ` [Bug c++/106847] " avi at scylladb dot com
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: avi at scylladb dot com @ 2022-09-06 10:33 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106847
Bug ID: 106847
Summary: deprecated class data member makes the class generate
diagnostics even when the member is not used
Product: gcc
Version: 13.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: avi at scylladb dot com
Target Milestone: ---
A class with a deprecated member:
struct foo {
[[deprecated]] bool x;
};
Cannot be used without lots of noise from the compiler:
foo make_a_foo() {
foo f;
return f;
}
<source>: In function 'foo make_a_foo()':
<source>:10:12: warning: 'f' is used uninitialized [-Wuninitialized]
10 | return f;
| ^
<source>:9:9: note: 'f' declared here
9 | foo f;
| ^
Compiler returned: 0
Although I didn't touch x, the compiler thinks I did. IMO synthesized
constructors (and assignment operators) should suppress the warning and only
explicit access by the user should trigger the warning.
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c++/106847] deprecated class data member makes the class generate diagnostics even when the member is not used
2022-09-06 10:33 [Bug c++/106847] New: deprecated class data member makes the class generate diagnostics even when the member is not used avi at scylladb dot com
@ 2022-09-06 10:33 ` avi at scylladb dot com
2022-09-07 8:24 ` rguenth at gcc dot gnu.org
2022-09-08 8:52 ` avi at scylladb dot com
2 siblings, 0 replies; 4+ messages in thread
From: avi at scylladb dot com @ 2022-09-06 10:33 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106847
--- Comment #1 from Avi Kivity <avi at scylladb dot com> ---
Clang equivalent: https://github.com/llvm/llvm-project/issues/55774
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c++/106847] deprecated class data member makes the class generate diagnostics even when the member is not used
2022-09-06 10:33 [Bug c++/106847] New: deprecated class data member makes the class generate diagnostics even when the member is not used avi at scylladb dot com
2022-09-06 10:33 ` [Bug c++/106847] " avi at scylladb dot com
@ 2022-09-07 8:24 ` rguenth at gcc dot gnu.org
2022-09-08 8:52 ` avi at scylladb dot com
2 siblings, 0 replies; 4+ messages in thread
From: rguenth at gcc dot gnu.org @ 2022-09-07 8:24 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106847
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |diagnostic
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Well, you did use it by copying it? Specify a copy CTOR that does not copy 'x'
and you'll be fine?
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c++/106847] deprecated class data member makes the class generate diagnostics even when the member is not used
2022-09-06 10:33 [Bug c++/106847] New: deprecated class data member makes the class generate diagnostics even when the member is not used avi at scylladb dot com
2022-09-06 10:33 ` [Bug c++/106847] " avi at scylladb dot com
2022-09-07 8:24 ` rguenth at gcc dot gnu.org
@ 2022-09-08 8:52 ` avi at scylladb dot com
2 siblings, 0 replies; 4+ messages in thread
From: avi at scylladb dot com @ 2022-09-08 8:52 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106847
--- Comment #3 from Avi Kivity <avi at scylladb dot com> ---
But I need it to be copied. It's a struct of options:
struct options {
bool frob = false;
[[derecated]] bool quux = false; // will be removed soon
bool grue = false;
};
The fact that it's deprecated doesn't mean it can be coerced to false.
Sure, I can create custom constructors and assignment operators, but I lose
designated initializers.
btw, the destructor doesn't trigger the deprecation warning, even though it
does use the deprecated member.
I think it's more reasonable to only emit the warning when the member is
explicitly used.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-09-08 8:52 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-06 10:33 [Bug c++/106847] New: deprecated class data member makes the class generate diagnostics even when the member is not used avi at scylladb dot com
2022-09-06 10:33 ` [Bug c++/106847] " avi at scylladb dot com
2022-09-07 8:24 ` rguenth at gcc dot gnu.org
2022-09-08 8:52 ` avi at scylladb dot com
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).