This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[3.1.1/mainline] reg-stack fix
- From: Jan Hubicka <jh at suse dot cz>
- To: gcc-patches at gcc dot gnu dot org, rth at cygnus dot com
- Date: Sat, 22 Jun 2002 15:16:43 +0200
- Subject: [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);
}
}