https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110459
Bug ID: 110459 Summary: Trivial on stack variable was not optimized away Product: gcc Version: 14.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: antoshkka at gmail dot com Target Milestone: --- Consider the example: struct array { char data[4]; }; auto sample2(char c) { array buffer = {c, 0, 0, 0}; return buffer; } With GCC-14 and -O2 it produces the following assembly: sample2(char): xor eax, eax mov BYTE PTR [rsp-22], 0 mov WORD PTR [rsp-24], ax mov eax, DWORD PTR [rsp-24] sal eax, 8 mov al, dil ret It could be further optimized to just: sample2(char): movzx eax, dil ret Godbolt playground: https://godbolt.org/z/nxKhvo3ns