Index: arm.c =================================================================== RCS file: /cvsroot/gcc/gcc/gcc/config/arm/arm.c,v retrieving revision 1.456 diff -c -3 -p -r1.456 arm.c *** arm.c 9 May 2005 22:09:47 -0000 1.456 --- arm.c 13 May 2005 00:29:52 -0000 *************** use_return_insn (int iscond, rtx sibling *** 1465,1473 **** if (!call_used_regs[3]) return 0; ! /* ... that it isn't being used for a return value (always true ! until we implement return-in-regs), or for a tail-call ! argument ... */ if (sibling) { gcc_assert (GET_CODE (sibling) == CALL_INSN); --- 1465,1481 ---- if (!call_used_regs[3]) return 0; ! /* ... that it isn't being used for a return value ... */ ! if ((current_function_return_rtx != 0) && ! REG_P (current_function_return_rtx)) ! { ! enum machine_mode mode = GET_MODE (current_function_return_rtx); ! ! if (GET_MODE_SIZE (mode) >= (4 * UNITS_PER_WORD)) ! return 0; ! } ! ! /* ... or for a tail-call argument ... */ if (sibling) { gcc_assert (GET_CODE (sibling) == CALL_INSN);