aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@redhat.com>2004-06-25 06:57:14 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2004-06-25 06:57:14 +0000
commit3af5dcdb45192587bb3a338f299d7cc7e7f96125 (patch)
treec0b0d8cc1ef45e5dba426cd9ef45c2e3dea6fa39 /gcc
parent838d430929f683ab4315032d9dda8e1d5f2be8e2 (diff)
downloadgcc-3af5dcdb45192587bb3a338f299d7cc7e7f96125.zip
gcc-3af5dcdb45192587bb3a338f299d7cc7e7f96125.tar.gz
gcc-3af5dcdb45192587bb3a338f299d7cc7e7f96125.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/mips/mips.md4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/torture/mips-div-1.c9
4 files changed, 21 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c0ea1b7..c99ac82 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2004-06-25 Richard Sandiford <rsandifo@redhat.com>
+
+ 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 <bernie@develer.com>
* 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 3dfb98d..545565c 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 f7acf36..5485086 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2004-06-25 Richard Sandiford <rsandifo@redhat.com>
+
+ * gcc.dg/torture/mips-div-1.c: New test.
+
2004-06-24 Jeff Law <law@redhat.com>
* 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 0000000..6345000
--- /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} } } */