Option -mfloat-gprs=yes works fine with basic operations on floats like +, -, / *.
The following simple example produces an internal compiler error: # 1 "test.c" # 1 "<built-in>" # 1 "<command line>" # 1 "test.c" int compare(float x, float y) { return (x < y); } The error message is test.c: In function `compare': test.c:5: error: unrecognizable insn: (insn 14 13 15 0 (set (reg:CCFP 122) (compare:CCFP (reg:SF 120 [ x ]) (reg:SF 121 [ y ]))) -1 (nil) (expr_list:REG_DEAD (reg:SF 120 [ x ]) (expr_list:REG_DEAD (reg:SF 121 [ y ]) (nil)))) test.c:5: internal compiler error: in extract_insn, at recog.c:2083 Please submit a full bug report, with preprocessed source if appropriate. The compile command is powerpc-eabispe-gcc -bpowerpc-eabispe -mcpu=505 -mno-sdata -mfloat-gprs=yes -Wall -Wstrict-prototypes -Wall -save-temps -c -o o/test.o test.c The gcc version output is Reading specs from /opt/CSE/lib/gcc/powerpc-eabispe/3.4.6/specs Configured with: ../gcc-3.4.6/configure --disable-nls --prefix=/opt/CSE --target=powerpc-eabispe Thread model: single gcc version 3.4.6 -- Summary: internal compiler error, if float-comparison is done with option -mfloat-gprs=yes Product: gcc Version: 3.4.6 Status: UNCONFIRMED Severity: blocker Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: poellmann at nm dot hsd dot utc dot com GCC build triplet: ../gcc-3.4.6/configure --disable-nls --prefix=/opt/CSE - -target= GCC host triplet: Cygwin on Win2000 GCC target triplet: powerpc-eabispe http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29815