This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
x86_64 versus new aliasing code
- To: gcc-patches at gcc dot gnu dot org, rth at cygnus dot com, patches at x86-64 dot org
- Subject: x86_64 versus new aliasing code
- From: Jan Hubicka <jh at suse dot cz>
- Date: Thu, 18 Oct 2001 16:20:04 +0200
Hi,
The Richards alias code is unhappy about changing the MEM reference to stack
slot into varargs_alias_set. This patch avoids the problem by re-generating
the reference, as sparc backend does. I've also removed bit of dead code.
Thu Oct 18 17:09:27 CEST 2001 Jan Hubicka <jh@suse.cz>
* i386.c (ix86_va_arg): Kill indirect_p handling; fix aliasing issues.:
*** i386.c.nox Thu Oct 18 16:08:08 2001
--- i386.c Thu Oct 18 17:07:16 2001
*************** ix86_va_arg (valist, type)
*** 2334,2340 ****
static int intreg[6] = { 0, 1, 2, 3, 4, 5 };
tree f_gpr, f_fpr, f_ovf, f_sav;
tree gpr, fpr, ovf, sav, t;
! int indirect_p = 0, size, rsize;
rtx lab_false, lab_over = NULL_RTX;
rtx addr_rtx, r;
rtx container;
--- 2334,2340 ----
static int intreg[6] = { 0, 1, 2, 3, 4, 5 };
tree f_gpr, f_fpr, f_ovf, f_sav;
tree gpr, fpr, ovf, sav, t;
! int size, rsize;
rtx lab_false, lab_over = NULL_RTX;
rtx addr_rtx, r;
rtx container;
*************** ix86_va_arg (valist, type)
*** 2462,2470 ****
int i;
rtx mem;
! mem = assign_temp (type, 0, 1, 0);
set_mem_alias_set (mem, get_varargs_alias_set ());
! addr_rtx = XEXP (mem, 0);
for (i = 0; i < XVECLEN (container, 0); i++)
{
rtx slot = XVECEXP (container, 0, i);
--- 2462,2472 ----
int i;
rtx mem;
! /* Never use the memory itself, as it do have wrong alias set. */
! addr_rtx = XEXP (assign_temp (type, 0, 1, 0), 0);
! mem = gen_rtx_MEM (BLKmode, addr_rtx);
set_mem_alias_set (mem, get_varargs_alias_set ());
!
for (i = 0; i < XVECLEN (container, 0); i++)
{
rtx slot = XVECEXP (container, 0, i);
*************** ix86_va_arg (valist, type)
*** 2490,2496 ****
src_mem = adjust_address (src_mem, mode, src_offset);
dest_mem = adjust_address (mem, mode, INTVAL (XEXP (slot, 1)));
PUT_MODE (dest_mem, mode);
- /* ??? Break out TImode moves from integer registers? */
emit_move_insn (dest_mem, src_mem);
}
}
--- 2492,2497 ----
*************** ix86_va_arg (valist, type)
*** 2546,2559 ****
if (container)
emit_label (lab_over);
- if (indirect_p)
- {
- abort ();
- r = gen_rtx_MEM (Pmode, addr_rtx);
- set_mem_alias_set (r, get_varargs_alias_set ());
- emit_move_insn (addr_rtx, r);
- }
-
return addr_rtx;
}
--- 2547,2552 ----