From: Richard Kenner Date: Thu, 23 Jun 1994 23:25:10 +0000 (-0400) Subject: (movsf): Only generate stack temporary if used. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f6ba0600ffc9a3035a121b50fffcf90754a342f5;p=gcc.git (movsf): Only generate stack temporary if used. From-SVN: r7552 --- diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 1f287253605..747355ade64 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -3763,8 +3763,6 @@ if (GET_CODE (operands[1]) == REG && REGNO (operands[1]) < 32) { - rtx stack_slot = assign_stack_temp (SFmode, 4, 0); - /* If this is a store to memory or another integer register do the move directly. Otherwise store to a temporary stack slot and load from there into a floating point register. */ @@ -3779,10 +3777,14 @@ operand_subword (operands[1], 0, 0, SFmode)); DONE; } + else + { + rtx stack_slot = assign_stack_temp (SFmode, 4, 0); - emit_move_insn (stack_slot, operands[1]); - emit_move_insn (operands[0], stack_slot); - DONE; + emit_move_insn (stack_slot, operands[1]); + emit_move_insn (operands[0], stack_slot); + DONE; + } } if (GET_CODE (operands[0]) == MEM) @@ -3790,8 +3792,6 @@ if (GET_CODE (operands[0]) == REG && REGNO (operands[0]) < 32) { - rtx stack_slot = assign_stack_temp (SFmode, 4, 0); - if (GET_CODE (operands[1]) == MEM #if HOST_FLOAT_FORMAT == TARGET_FLOAT_FORMAT && ! defined(REAL_IS_NOT_DOUBLE) || GET_CODE (operands[1]) == CONST_DOUBLE @@ -3805,10 +3805,14 @@ operand_subword (operands[1], 0, 0, SFmode)); DONE; } + else + { + rtx stack_slot = assign_stack_temp (SFmode, 4, 0); - emit_move_insn (stack_slot, operands[1]); - emit_move_insn (operands[0], stack_slot); - DONE; + emit_move_insn (stack_slot, operands[1]); + emit_move_insn (operands[0], stack_slot); + DONE; + } } if (CONSTANT_P (operands[1]))