[Bug c++/104142] [9/10/11/12 Regression] Spurios warning unused-variable on const static variable and defaulted constructor
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104142 Jason Merrill changed: What|Removed |Added CC||jason at gcc dot gnu.org Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |jason at gcc dot gnu.org
[Bug c++/104142] [9/10/11/12 Regression] Spurios warning unused-variable on const static variable and defaulted constructor
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104142 --- Comment #5 from CVS Commits --- The master branch has been updated by Jason Merrill : https://gcc.gnu.org/g:0899b22d9329c1e8fc12d6f0deee0f87dcc0163a commit r12-8099-g0899b22d9329c1e8fc12d6f0deee0f87dcc0163a Author: Jason Merrill Date: Mon Apr 11 14:50:14 2022 -0400 c++: rodata and defaulted ctor [PR104142] Trivial initialization shouldn't bump a variable out of .rodata; if the result of build_aggr_init is an empty STATEMENT_LIST, throw it away. PR c++/104142 gcc/cp/ChangeLog: * decl.cc (check_initializer): Check TREE_SIDE_EFFECTS. gcc/testsuite/ChangeLog: * g++.dg/opt/const7.C: New test.
[Bug c++/104142] [9/10/11/12 Regression] Spurios warning unused-variable on const static variable and defaulted constructor
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104142 Andrew Pinski changed: What|Removed |Added Target Milestone|--- |9.5 Summary|Spurios warning |[9/10/11/12 Regression] |unused-variable on const|Spurios warning |static variable and |unused-variable on const |defaulted constructor |static variable and ||defaulted constructor --- Comment #2 from Andrew Pinski --- There was no -Wunused-variable warning for b before GCC 8. -Wunused-const-variable didn't warn about b either in GCC 8 (and before).
[Bug c++/104142] [9/10/11/12 Regression] Spurios warning unused-variable on const static variable and defaulted constructor
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104142 Jakub Jelinek changed: What|Removed |Added CC||jakub at gcc dot gnu.org --- Comment #3 from Jakub Jelinek --- It isn't clear what exactly is the regression. We warn on b with -Wunused-variable since r9-412-gb46b715d5b838d9869f89d3594ebf7d0b7cb374c A and B aren't the same, one has explicit defaulted ctor, the other has implicit ctor. -Wunused-const-variable warns about a and not b since its introduction in r6-3283-g0f876f22887f239cedca64ff170b71e5f1daaf54
[Bug c++/104142] [9/10/11/12 Regression] Spurios warning unused-variable on const static variable and defaulted constructor
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104142 Jakub Jelinek changed: What|Removed |Added CC||mpolacek at gcc dot gnu.org, ||ppalka at gcc dot gnu.org --- Comment #4 from Jakub Jelinek --- If we want the same warning, we'd need to probably special case const vars with defaulted default ctors and empty classes, if it isn't empty class, both of these are rejected already: pr104142.C:2:16: error: uninitialized ‘const a’ [-fpermissive] 2 | static const A a; |^ pr104142.C:1:8: note: ‘const struct A’ has no user-provided default constructor 1 | struct A { int a; }; |^ pr104142.C:1:16: note: and the implicitly-defined constructor does not initialize ‘int A::a’ 1 | struct A { int a; }; |^ pr104142.C:5:16: error: uninitialized ‘const b’ [-fpermissive] 5 | static const B b; |^ pr104142.C:4:8: note: ‘const struct B’ has no user-provided default constructor 4 | struct B { B()=default; int b; }; |^ pr104142.C:4:12: note: constructor is not user-provided because it is explicitly defaulted in the class body 4 | struct B { B()=default; int b; }; |^ pr104142.C:4:29: note: and the implicitly-defined constructor does not initialize ‘int B::b’ 4 | struct B { B()=default; int b; }; | ^