https://gcc.gnu.org/bugzilla/show_bug.cgi?id=22141

--- Comment #41 from ktkachov at gcc dot gnu.org ---
(In reply to etienne_lorrain from comment #40)
> 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.

Yeah, I separate bugzilla entry would be good here

Reply via email to