http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54429
--- Comment #3 from Oleg Endo <olegendo at gcc dot gnu.org> 2012-11-13 08:44:43 UTC --- I've tested this: Index: gcc/config/sh/sh.c =================================================================== --- gcc/config/sh/sh.c (revision 193423) +++ gcc/config/sh/sh.c (working copy) @@ -12113,6 +12113,11 @@ if (FP_REGISTER_P (regno) && mode == SFmode) return true; + if (FP_REGISTER_P (regno) + && !(GET_MODE_CLASS (mode) == MODE_FLOAT + || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT)) + return false; + if (mode == V2SFmode) { if (((FP_REGISTER_P (regno) && (regno - FIRST_FP_REG) % 2 == 0) on rev 193423. There are a few failures on targets with HW FPU: FAIL: gcc.c-torture/execute/20080502-1.c compilation FAIL: gcc.c-torture/execute/ieee/copysign1.c compilation FAIL: gcc.dg/builtins-32.c (internal compiler error) FAIL: gcc.dg/builtins-50.c (internal compiler error) FAIL: gcc.dg/pr48335-7.c (internal compiler error) I'll check out the details.