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]
Other format: [Raw text]

[3.1.1/mainline] reg-stack fix


Hi,
this patch fixes bug in reg-stack that makes stack at return to be
ordered in reverse order than expected. (Ie GCC st(0) deepest in the
stack).  This does not make problem for i386 as there is never multiple
registers used for returning the value, but for x86-64 we use
st(0)/st(1) pairs to return TCmodes

Bootstrapped/regtested i386 and verified to fix the long double bugs on
x86-64.

Fri Jun 21 22:27:33 CEST 2002  Jan Hubicka  <jh@suse.cz>
	* reg-stack.c (convert_regs_exit): Push the registers to stack in proper order.
Index: reg-stack.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/reg-stack.c,v
retrieving revision 1.111
diff -c -3 -p -r1.111 reg-stack.c
*** reg-stack.c	11 Jun 2002 12:21:58 -0000	1.111
--- reg-stack.c	21 Jun 2002 20:26:26 -0000
*************** convert_regs_exit ()
*** 2462,2468 ****
        output_stack->top = value_reg_high - value_reg_low;
        for (reg = value_reg_low; reg <= value_reg_high; ++reg)
  	{
! 	  output_stack->reg[reg - value_reg_low] = reg;
  	  SET_HARD_REG_BIT (output_stack->reg_set, reg);
  	}
      }
--- 2462,2468 ----
        output_stack->top = value_reg_high - value_reg_low;
        for (reg = value_reg_low; reg <= value_reg_high; ++reg)
  	{
! 	  output_stack->reg[value_reg_high - reg] = reg;
  	  SET_HARD_REG_BIT (output_stack->reg_set, reg);
  	}
      }


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