Commit 208996c7 by Richard Sandiford Committed by Richard Sandiford

function.c (assign_parm_setup_block): Explicitly convert BLKmode parameters from…

function.c (assign_parm_setup_block): Explicitly convert BLKmode parameters from word_mode to the subword type if...

gcc/
	* function.c (assign_parm_setup_block): Explicitly convert BLKmode
	parameters from word_mode to the subword type if such a truncation
	is not a no-op.

From-SVN: r128696
parent 4c471775
2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
* function.c (assign_parm_setup_block): Explicitly convert BLKmode
parameters from word_mode to the subword type if such a truncation
is not a no-op.
2007-09-23 Jakub Jelinek <jakub@redhat.com>
* configure.ac (MAKEINFO): Handle makeinfo version 4.10 and above.
......@@ -2591,7 +2591,21 @@ assign_parm_setup_block (struct assign_parm_data_all *all,
#endif
)
{
rtx reg = gen_rtx_REG (mode, REGNO (entry_parm));
rtx reg;
/* We are really truncating a word_mode value containing
SIZE bytes into a value of mode MODE. If such an
operation requires no actual instructions, we can refer
to the value directly in mode MODE, otherwise we must
start with the register in word_mode and explicitly
convert it. */
if (TRULY_NOOP_TRUNCATION (size * BITS_PER_UNIT, BITS_PER_WORD))
reg = gen_rtx_REG (mode, REGNO (entry_parm));
else
{
reg = gen_rtx_REG (word_mode, REGNO (entry_parm));
reg = convert_to_mode (mode, copy_to_reg (reg), 1);
}
emit_move_insn (change_address (mem, mode, 0), reg);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment