OK,
thanks everyone; I got onto egcs it was a lot easier than I imagined.
I got extendsidi to work.  Now for the next stumper:

How can I get functions that return scalars that are SImode or smaller 
to return in a register, but functions returning DImode to do so in
memory?  

I've got this little problem: by convention/history/backwards
comaptibility, the value returned by a subroutine went into
R15 (and there are only 16 registers, all SI in size.) So clearly
a DImode returned value won't fit.  I can't just shuffle things around,
r14 is used for linkage, r13 for stack, r12 for toc, r11 for args. 
So it would be nasty to move these.

I've tried fiddling with the FUNCTION_VALUE macro to turn it into a 
pointer to memory, but that leads to various core dumps.  I've tried
putting stronger restrictions on registers, but that never changes
anything.

Maybe I should try writing an instruction pattern that "demotes"
a set:DImode  regsiter into an SImode pointer to memory? 

--linas




Reply via email to