From ee88d9aa55398253759a68eba8fec4f05819910a Mon Sep 17 00:00:00 2001 From: Maxim Kuvyrkov <maxim@codesourcery.com> Date: Mon, 1 Jun 2009 14:45:18 +0000 Subject: [PATCH] Revert due to PR40320: 2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com> * calls.c (emit_library_call_value_1): Don't force_operand for move and push insns. From-SVN: r148046 --- gcc/ChangeLog | 8 ++++++++ gcc/calls.c | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index eee6e8447fdd..82b15ed63e25 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com> + + Revert due to PR40320: + + 2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com> + * calls.c (emit_library_call_value_1): Don't force_operand for move + and push insns. + 2009-06-01 Olivier Hainque <hainque@adacore.com> Eric Botcazou <botcazou@adacore.com> diff --git a/gcc/calls.c b/gcc/calls.c index 0d83ff4f38e2..c10b0cd3abad 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -3412,6 +3412,11 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx value, nargs++; + /* Make sure it is a reasonable operand for a move or push insn. */ + if (!REG_P (addr) && !MEM_P (addr) + && ! (CONSTANT_P (addr) && LEGITIMATE_CONSTANT_P (addr))) + addr = force_operand (addr, NULL_RTX); + argvec[count].value = addr; argvec[count].mode = Pmode; argvec[count].partial = 0; @@ -3447,6 +3452,11 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx value, gcc_assert (mode != BLKmode && (GET_MODE (val) == mode || GET_MODE (val) == VOIDmode)); + /* Make sure it is a reasonable operand for a move or push insn. */ + if (!REG_P (val) && !MEM_P (val) + && ! (CONSTANT_P (val) && LEGITIMATE_CONSTANT_P (val))) + val = force_operand (val, NULL_RTX); + if (pass_by_reference (&args_so_far, mode, NULL_TREE, 1)) { rtx slot; -- GitLab