From: Erik P. <epe...@iv...> - 2003-09-22 21:52:17
|
> Unfortunately frexpf.c needs an additional _frexpf_sloc0_1_0 now. My > reference is a checkout from 03-09-13, where iTemp8 and iTemp11 simply > share the same registers (in the right order of course). Could you > please check again, if this optimization could be re-enabled? This is happening because it also wants to reposition iTemp11's register allocation from [r6 r7 r0 r1] to [r7 r6 r0 r1] to avoid the lurking near-miss with r6 in: ; ic:11: iTemp14 {int}[r1 r6] = (xdata-int)iTemp11 [r6 r7 r0 r1] ; genCast mov ar1,r6 mov ar6,r7 In this particular case we were lucky and nothing bad really happened. However in bug #762602, the compiler was also doing a cast using the same positioning algorithm (but a different register allocation) and generated: ; genCast mov ar3, r2 mov ar4, r3 <---The original r3 is already lost There is certainly room for improvement in the register allocation process; I was just focused on fixing the parts that lead to incorrect code. I'll see if I can find a good way (that is, not involving a lot of exception cases) to have both correct and more optimal code. Erik |