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

--- Comment #16 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
> unsigned int foo (unsigned short *x)
> {
>   return x[0] << 16 | x[1];
> }
> 
> [...]
> gets you
> 
> foo:
>         lduh    [%o0], %g1
>         lduh    [%o0+2], %o0
>         sll     %g1, 16, %g1
>         jmp     %o7+8
>          or     %o0, %g1, %o0
> 
> which looks perfect to me.

Indeed, but after having gone through a perfectly useless transformation and
wasted cycles.  This reminds me of the ipa-split + inlining round trip.

Really SPARC machines aren't fast enough to allow such a silliness...

Reply via email to