From 6b972c4f89de8efa3a920fa36ecbf13494878939 Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Thu, 17 Mar 1994 15:36:20 -0800 Subject: [PATCH] (expand_call): Undo Feb 27 change. (expand_call): Undo Feb 27 change. Set nregs to -1 for normal case. From-SVN: r6805 --- gcc/calls.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/gcc/calls.c b/gcc/calls.c index d9cc9f600a3..c7a85bed1f8 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -1782,19 +1782,21 @@ expand_call (exp, target, ignore) else reg = list, list = 0; - /* Set to non-zero if must move a word at a time, even if just one - word (e.g, partial == 1 && mode == DFmode). Set to zero if - we just use a normal move insn. */ + /* Set to non-negative if must move a word at a time, even if just + one word (e.g, partial == 1 && mode == DFmode). Set to -1 if + we just use a normal move insn. This value can be zero if the + argument is a zero size structure with no fields. */ nregs = (partial ? partial : (TYPE_MODE (TREE_TYPE (args[i].tree_value)) == BLKmode - ? -1 - : 0)); + ? ((int_size_in_bytes (TREE_TYPE (args[i].tree_value)) + + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD) + : -1)); /* If simple case, just do move. If normal partial, store_one_arg has already loaded the register for us. In all other cases, load the register(s) from memory. */ - if (nregs == 0) + if (nregs == -1) emit_move_insn (reg, args[i].value); #ifdef STRICT_ALIGNMENT @@ -1808,19 +1810,12 @@ expand_call (exp, target, ignore) #endif else if (args[i].partial == 0 || args[i].pass_on_stack) - { - /* This value might be zero, if the argument is a zero size - structure with no fields, so we can't use it to set nregs - above. */ - nregs = ((int_size_in_bytes (TREE_TYPE (args[i].tree_value)) - + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD); - move_block_to_reg (REGNO (reg), - validize_mem (args[i].value), nregs, - args[i].mode); - } + move_block_to_reg (REGNO (reg), + validize_mem (args[i].value), nregs, + args[i].mode); push_to_sequence (use_insns); - if (nregs == 0) + if (nregs == -1) emit_insn (gen_rtx (USE, VOIDmode, reg)); else use_regs (REGNO (reg), nregs); -- 2.30.2