From dc0f0eb82e44c834c5a0552a036d5e87c7b524aa Mon Sep 17 00:00:00 2001 From: John Wehle Date: Mon, 20 Apr 1998 15:06:40 +0000 Subject: [PATCH] Patch from John Wehle to fix movxf_push spill reg allocation failure. * i386.md (movsf_push, movdf_push, movxf_push): Allow memory operands during and after reload. From-SVN: r19346 --- gcc/ChangeLog | 5 +++++ gcc/config/i386/i386.md | 21 +++++++++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 563928d4d5a1..fbac26bdaf32 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Mon Apr 20 15:04:14 1998 John Wehle (john@feith.com) + + * i386.md (movsf_push, movdf_push, movxf_push): Allow memory + operands during and after reload. + Mon Apr 20 22:37:50 1998 J"orn Rennecke * final.c (shorten_branches, init_insn_lengths): Move code diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index ecae5172ad82..7fe22aafbd1d 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -1189,8 +1189,8 @@ (define_insn "movsf_push" [(set (match_operand:SF 0 "push_operand" "=<,<") - (match_operand:SF 1 "nonmemory_operand" "rF,f"))] - "" + (match_operand:SF 1 "general_operand" "*rfF,m"))] + "GET_CODE (operands[1]) != MEM || reload_in_progress || reload_completed" "* { if (STACK_REG_P (operands[1])) @@ -1213,6 +1213,7 @@ RET; } + return AS1 (push%L0,%1); }") @@ -1336,8 +1337,8 @@ (define_insn "movdf_push" [(set (match_operand:DF 0 "push_operand" "=<,<") - (match_operand:DF 1 "nonmemory_operand" "rF,f"))] - "" + (match_operand:DF 1 "general_operand" "*rfF,o"))] + "GET_CODE (operands[1]) != MEM || reload_in_progress || reload_completed" "* { if (STACK_REG_P (operands[1])) @@ -1357,6 +1358,10 @@ RET; } + + if (which_alternative == 1) + return output_move_pushmem (operands, insn, GET_MODE_SIZE (DFmode), 0, 0); + return output_move_double (operands); }") @@ -1482,8 +1487,8 @@ (define_insn "movxf_push" [(set (match_operand:XF 0 "push_operand" "=<,<") - (match_operand:XF 1 "nonmemory_operand" "rF,f"))] - "" + (match_operand:XF 1 "general_operand" "*rfF,o"))] + "GET_CODE (operands[1]) != MEM || reload_in_progress || reload_completed" "* { if (STACK_REG_P (operands[1])) @@ -1502,6 +1507,10 @@ RET; } + + if (which_alternative == 1) + return output_move_pushmem (operands, insn, GET_MODE_SIZE (XFmode), 0, 0); + return output_move_double (operands); }") -- 2.47.3