>>>>> "Helmer" == Helmer Kr�mer <[EMAIL PROTECTED]> writes:

Helmer> while having a closer look at the jit3 engine to find out what
Helmer> broke the m68k backend, I also noticed a few other things that
Helmer> might help e.g. mipsel.

Helmer> First of all, move_register() seems to pass wrong values to
Helmer> the backend's HAVE_move_register_foo:

Helmer>  #if defined(HAVE_move_register_int)
Helmer>         if (reginfo[toreg].type & (Rint|Rsubint)) {
Helmer>                 HAVE_move_register_int(toreg, fromreg);
Helmer>                 return (1);
Helmer>         }
Helmer>         else
Helmer>  #endif

Helmer> The values passed to the HAVE_move_register_foo are the
Helmer> indices for the reginfo array. However, I think it would be
Helmer> correct to pass the regno field of the register instead:
Helmer>         ...
Helmer>         HAVE_move_register_int(reginfo[toreg].regno, reginfo[fromreg].regno);
Helmer>         ...
Helmer> Since these are the same values that are returned by
Helmer> slotRegister().

Helmer> With the attached patch applied, it should be possible to add
Helmer> a HAVE_move_register_float to the mipsel backend, which in
Helmer> turn might save a few spills when allocating a floating point
Helmer> register.

Helmer> Comments?

You are definitely correct: this was the source of many of my problems
on mipsel. Your change looks better than what I had, and I may be able
to test this out on mipsel soon.

-- 
Casey Marshall || [EMAIL PROTECTED]

_______________________________________________
kaffe mailing list
[EMAIL PROTECTED]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to