On Fri, Mar 07, 2008 at 08:47:03PM +0200, Blue Swirl wrote: > On 3/7/08, Stuart Brady <[EMAIL PROTECTED]> wrote: > > tcg_target_reg_alloc_order[] has 32 elements, but only 14 are used. > > The rest hold 0, specifying TCG_REG_G0. > > I see. That could be asking for trouble.
Possibly not, as g0 is marked as reserved, but it looks to me like bug, regardless of whether it causes any harm, so I've submitted a patch. > > I don't understand -- o7 is required when returning in exit_tb, so if it > > is used, it must be saved and restored. > > Not exit_tb, but call. Right, op_call does need to link, and that clobbers the link register, so it must be restored -- but I've a feeling that this isn't happening. I expect you could copy o7 to/from i5 before/after the call (or jmpl)... although I'm not sure if you'd also need to save the frame pointer. op_exit_tb also needs the link register, as it needs to know where to return to. I see you've fixed op_goto_tb -- I'm not sure if TCG_REG_I5 now needs removing from tcg_target_reg_alloc_order[], though. Cheers, -- Stuart Brady