https://gcc.gnu.org/bugzilla/show_bug.cgi?id=22141
--- Comment #40 from etienne_lorrain at yahoo dot fr --- Following my comment No 17, the optimisation could also be done for reads - we still have (https://gcc.godbolt.org/ -O2 -m32) that: struct S { char a; char b; char c; char d; } u, v; void fct (void) { u.a = v.a; u.b = v.b; u.c = v.c; u.d = v.d; } compiled into: fct(): movzbl v, %eax movb %al, u movzbl v+1, %eax movb %al, u+1 movzbl v+2, %eax movb %al, u+2 movzbl v+3, %eax movb %al, u+3 ret Same if fct() contains "u = (struct S) {v.a, v.b, v.c, v.d};" Where a single read32 / write32 could be used... Having fct() only do "u = v;" is compiled with a single read32 / write32. I do not know if it is important enough, if it needs another bugzilla number... Thanks.