Commit 190e9534 by Paolo Bonzini Committed by Paolo Bonzini

re PR target/27390 (gcc.target/x86_64/abi/test_complex_returning.c execution fails at -O0)

2006-06-07  Paolo Bonzini  <bonzini@gnu.org>

	PR target/27390
	* reg-stack.c (subst_stack_regs_pat): Reorder resetting of
	the imaginary and real parts of a clobbered register.
	Emit insn to set the imaginary part.

From-SVN: r114462
parent 0e9a445b
2006-06-07 Paolo Bonzini <bonzini@gnu.org>
PR target/27390
* reg-stack.c (subst_stack_regs_pat): Reorder resetting of
the imaginary and real parts of a clobbered register.
Emit insn to set the imaginary part.
2006-06-06 Peter Lemieszewski <lemie@us.ibm.com>
* config/s390/t-tpf (LIB2ADDEH): Include unwind-dw2-fde-glibc.c
......
......@@ -1371,16 +1371,20 @@ subst_stack_regs_pat (rtx insn, stack regstack, rtx pat)
if (!note)
{
rtx t = *dest;
if (get_hard_regnum (regstack, t) == -1)
control_flow_insn_deleted
|= move_nan_for_stack_reg (insn, regstack, t);
if (COMPLEX_MODE_P (GET_MODE (t)))
{
t = FP_MODE_REG (REGNO (t) + 1, DFmode);
if (get_hard_regnum (regstack, t) == -1)
control_flow_insn_deleted
|= move_nan_for_stack_reg (insn, regstack, t);
rtx u = FP_MODE_REG (REGNO (t) + 1, SFmode);
if (get_hard_regnum (regstack, u) == -1)
{
rtx pat2 = gen_rtx_CLOBBER (VOIDmode, u);
rtx insn2 = emit_insn_before (pat2, insn);
control_flow_insn_deleted
|= move_nan_for_stack_reg (insn2, regstack, u);
}
}
if (get_hard_regnum (regstack, t) == -1)
control_flow_insn_deleted
|= move_nan_for_stack_reg (insn, regstack, t);
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment