https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99362
Bug ID: 99362 Summary: invalid unused result Product: gcc Version: 10.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: gcc at cookiesoft dot de Target Milestone: --- Target: arm The following code will emit a warning on arm 32 bit compilers: ``` struct S { [[nodiscard]] S() {} }; int main() { S s; } ``` ``` <source>: In function 'int main()': <source>:6:7: warning: ignoring return value of 'S::S()', declared with attribute 'nodiscard' [-Wunused-result] 6 | S s; | ^ <source>:2:19: note: declared here 2 | [[nodiscard]] S() {} | ^ <source>:6:7: warning: ignoring return value of 'S::S()', declared with attribute 'nodiscard' [-Wunused-result] 6 | S s; | ^ <source>:2:19: note: declared here 2 | [[nodiscard]] S() {} | ^ Compiler returned: 0 ``` ``` S s = {} ``` does not emit such warning. Does not emit a warning on x86 compiler though. Does not emit a warning on 9.x branch, seems to be a regression. Godbolt link: https://godbolt.org/z/4Kof1x