This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

x86_64 versus new aliasing code



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 ----


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]