This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: Bootstrap failure on powerpc-ibm-aix4.1.4.0 building libF77/r_sign.c
- To: "Kaveh R. Ghazi" <ghazi at caip dot rutgers dot edu>
- Subject: Re: Bootstrap failure on powerpc-ibm-aix4.1.4.0 building libF77/r_sign.c
- From: Geoff Keating <geoffk at cygnus dot com>
- Date: 07 Jul 2000 17:11:10 -0700
- CC: gcc-bugs at gcc dot gnu dot org
- References: <200007071810.OAA20549@caip.rutgers.edu>
This is probably my fault. Could you try replacing the
double-precision-truncating block in rs6000_emit_move with:
if (mode == SFmode && ! TARGET_POWERPC && TARGET_HARD_FLOAT
&& GET_CODE (operands[0]) == MEM)
{
int regnum;
if (reload_in_progress || reload_completed)
regnum = true_regnum (operands[1]);
else if (GET_CODE (operands[1]) == REG)
regnum = REGNO (operands[1]);
else
regnum = -1;
/* If operands[1] is a register, on POWER it may have
double-precision data in it, so truncate it to single
precision. */
if (FP_REGNO_P (regnum) || regnum >= FIRST_PSEUDO_REGISTER)
{
rtx newreg;
newreg = (no_new_pseudos ? operands[1] : gen_reg_rtx (mode));
emit_insn (gen_aux_truncdfsf2 (newreg, operands[1]));
operands[1] = newreg;
}
}
and see if that helps?
--
- Geoffrey Keating <geoffk@cygnus.com>