From 3af5dcdb45192587bb3a338f299d7cc7e7f96125 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Fri, 25 Jun 2004 06:57:14 +0000 Subject: [PATCH] re PR target/16144 (Bogus reference to __divdf3 when -O1) PR target/16144 * config/mips/mips.md (divsf, divdf): Don't FAIL if the first operand is 1.0; force it into a register instead. From-SVN: r83639 --- gcc/ChangeLog | 6 ++++++ gcc/config/mips/mips.md | 4 ++-- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/torture/mips-div-1.c | 9 +++++++++ 4 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/torture/mips-div-1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c0ea1b7dea6..c99ac822775 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-06-25 Richard Sandiford + + PR target/16144 + * config/mips/mips.md (divsf, divdf): Don't FAIL if the first operand + is 1.0; force it into a register instead. + 2004-06-25 Bernardo Innocenti * config/m68k/m68k.h: Restore valid comment removed by mistake with diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md index 3dfb98dc005..545565ce760 100644 --- a/gcc/config/mips/mips.md +++ b/gcc/config/mips/mips.md @@ -2322,7 +2322,7 @@ { if (const_float_1_operand (operands[1], DFmode)) if (!(ISA_HAS_FP4 && flag_unsafe_math_optimizations)) - FAIL; + operands[1] = force_reg (DFmode, operands[1]); }) ;; This pattern works around the early SB-1 rev2 core "F1" erratum: @@ -2372,7 +2372,7 @@ { if (const_float_1_operand (operands[1], SFmode)) if (!(ISA_HAS_FP4 && flag_unsafe_math_optimizations)) - FAIL; + operands[1] = force_reg (SFmode, operands[1]); }) ;; This pattern works around the early SB-1 rev2 core "F1" erratum (see diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f7acf36ee0b..54850865be2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2004-06-25 Richard Sandiford + + * gcc.dg/torture/mips-div-1.c: New test. + 2004-06-24 Jeff Law * gcc.dg/tree-ssa/20040624-1.c: New test. diff --git a/gcc/testsuite/gcc.dg/torture/mips-div-1.c b/gcc/testsuite/gcc.dg/torture/mips-div-1.c new file mode 100644 index 00000000000..6345000fe2c --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/mips-div-1.c @@ -0,0 +1,9 @@ +/* Check that hard-float MIPS code doesn't use library calls for 1.0/x. */ +/* { dg-options "-fno-delayed-branch" } */ +/* { dg-do compile { target mips*-*-* } } */ + +float f1 (float x) { return 1.0f / x; } +double f2 (double x) { return 1.0 / x; } + +/* { dg-final { scan-assembler-not {lwc1.*__divsf3} } } */ +/* { dg-final { scan-assembler-not {ldc1.*__divdf3} } } */ -- 2.30.2