On Wed, Mar 30, 2016 at 11:02:41AM +0200, Olivier Hainque wrote:
> void g(int, char *);
> 
> void f(int x)
> {
>        char big[200000];
>  start:
>        g(x, big);
>        g(x, big);
>        register void *p asm("r11") = &&start;
>        asm("" : : "r"(p));
>        asm("" : : :"r28");
>        asm("" : : :"r29");
>        asm("" : : :"r30");
> }
> 
> I'm getting:
> 
>         lis 11,.L2@ha
>         la 11,.L2@l(11)
> 
>         lwz 11,0(1)
>         lwz 0,4(11)
>         lwz 28,-16(11) 
> 
>       mr 1,11
> 
>       mtlr 0
>       lwz 29,-12(11)
>       lwz 30,-8(11)
>       lwz 31,-4(11)
> 
>       blr

BTW, the exact sequence you get depends on -mcpu (not surprising), but
yes, I see register restores after the "mr 1,11" too.

-- 
Alan Modra
Australia Development Lab, IBM

Reply via email to