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).