(I'm turning this into a thread of it's own, it's really the continuation of "error compiling libgcc with ported cross-compiler" from yesterday.)
I am porting GCC to a new target, and got the following error when cross-compiling libgcc towards the end of the make process: /cygdrive/c/home/risc/src/gcc-4.1.2/gcc/libgcc2.c:1702: error: insn does not satisfy its constraints: (insn 1468 1467 1471 /cygdrive/c/home/risc/src/gcc-4.1.2/gcc/libgcc2.c:1701 (set (mem/c/i:SF (plus:SI (mem/f/c:SI (plus:SI (reg/f:SI 29 r29) (const_int -296 [0xfffffed8])) [0 D.2393+0 S4 A8]) (const_int 4 [0x4])) [0 <result>+4 S4 A8]) (reg:SF 0 r0 [orig:51 D.2338+4 ] [51])) 8 {movsf} (nil) (nil)) I had a very similar problem some days ago, in the __powidf2 function, and then the solution was to define the movsf insn. This time I'm not sure what to do though. The problem now seems to be with complex number, but do I really have to define complex movsc-insns? I haven't found any other ports doing that, so I'm guessing there's something else I'm missing. What is really needed in terms of insns or target macros to support the various types of math of libgcc? Am I missing some insn for moving from SFmode to SImode?