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