expr.c (emit_group_load): Handle floats.
* expr.c (emit_group_load): Handle floats. (emit_group_store): Same. From-SVN: r89579
This commit is contained in:
parent
ea0ffdd260
commit
782fa603f9
@ -1,3 +1,8 @@
|
||||
2004-10-26 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
||||
* expr.c (emit_group_load): Handle floats.
|
||||
(emit_group_store): Same.
|
||||
|
||||
2004-10-26 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* c-lex.c (get_nonpadding_token): Remove.
|
||||
|
31
gcc/expr.c
31
gcc/expr.c
@ -1570,6 +1570,23 @@ emit_group_load (rtx dst, rtx orig_src, tree type ATTRIBUTE_UNUSED, int ssize)
|
||||
|
||||
gcc_assert (GET_CODE (dst) == PARALLEL);
|
||||
|
||||
if (!SCALAR_INT_MODE_P (GET_MODE (orig_src)))
|
||||
{
|
||||
enum machine_mode imode = int_mode_for_mode (GET_MODE (orig_src));
|
||||
if (imode == BLKmode)
|
||||
src = assign_stack_temp (GET_MODE (orig_src), ssize, 0);
|
||||
else
|
||||
src = gen_reg_rtx (imode);
|
||||
if (imode != BLKmode)
|
||||
src = gen_lowpart (GET_MODE (orig_src), src);
|
||||
emit_move_insn (src, orig_src);
|
||||
/* ...and back again. */
|
||||
if (imode != BLKmode)
|
||||
src = gen_lowpart (imode, src);
|
||||
emit_group_load (dst, src, type, ssize);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Check for a NULL entry, used to indicate that the parameter goes
|
||||
both on the stack and in registers. */
|
||||
if (XEXP (XVECEXP (dst, 0, 0), 0))
|
||||
@ -1726,6 +1743,20 @@ emit_group_store (rtx orig_dst, rtx src, tree type ATTRIBUTE_UNUSED, int ssize)
|
||||
|
||||
gcc_assert (GET_CODE (src) == PARALLEL);
|
||||
|
||||
if (!SCALAR_INT_MODE_P (GET_MODE (orig_dst)))
|
||||
{
|
||||
enum machine_mode imode = int_mode_for_mode (GET_MODE (orig_dst));
|
||||
if (imode == BLKmode)
|
||||
dst = assign_stack_temp (GET_MODE (orig_dst), ssize, 0);
|
||||
else
|
||||
dst = gen_reg_rtx (imode);
|
||||
emit_group_store (dst, src, type, ssize);
|
||||
if (imode != BLKmode)
|
||||
dst = gen_lowpart (GET_MODE (orig_dst), dst);
|
||||
emit_move_insn (orig_dst, dst);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Check for a NULL entry, used to indicate that the parameter goes
|
||||
both on the stack and in registers. */
|
||||
if (XEXP (XVECEXP (src, 0, 0), 0))
|
||||
|
Loading…
x
Reference in New Issue
Block a user