https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78967
Bug ID: 78967 Summary: inserts are not effective Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: ubizjak at gmail dot com Target Milestone: --- Similar to PR78904, following testcase: --cut here-- struct S1 { unsigned char pad1; unsigned char val; unsigned short pad2; }; extern unsigned char t; struct S1 foo (struct S1 a) { a.val = t; return a; } --cut here-- compiles to (-O2): movzbl t(%rip), %edx movl %edi, %eax movb %dl, %ah Optimal code would be: movl %edi, %eax movb t(%rip), %ah