This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
emit_group_load fix
- To: gcc-patches at gcc dot gnu dot org, rth at cygnus dot com, patches at x86-64 dot org
- Subject: emit_group_load fix
- From: Jan Hubicka <jh at suse dot cz>
- Date: Sun, 6 May 2001 13:28:13 +0200
Hi
for x86_64 I want to use single sse register to pass complex value,
as this soulution is consistent with what we do for structures and in
future we may want to use packed operations for complexs anyway.
Unfortunately emit_group_load is unable to handle converison.
Honza
Ne kvě 6 13:34:33 CEST 2001 Jan Hubicka <jh@suse.cz>
* expr.c (emit_group_load): Support CONCATs by storing them to memory
and reloading.
*** expr.c.gload Sat May 5 21:20:22 2001
--- expr.c Sat May 5 21:33:06 2001
*************** emit_group_load (dst, orig_src, ssize, a
*** 2008,2013 ****
--- 2008,2021 ----
else if (bytepos == (HOST_WIDE_INT) GET_MODE_SIZE (GET_MODE (XEXP (src, 0)))
&& bytelen == GET_MODE_SIZE (GET_MODE (XEXP (src, 1))))
tmps[i] = XEXP (src, 1);
+ else if (bytepos == 0)
+ {
+ rtx mem;
+ mem = assign_stack_temp (GET_MODE (src),
+ GET_MODE_SIZE (GET_MODE (src)), 0);
+ emit_move_insn (mem, src);
+ tmps[i] = change_address (mem, mode, XEXP (mem, 0));
+ }
else
abort ();
}