diff options
author | Richard Sandiford <rsandifo@redhat.com> | 2004-06-25 06:57:14 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2004-06-25 06:57:14 +0000 |
commit | 3af5dcdb45192587bb3a338f299d7cc7e7f96125 (patch) | |
tree | c0b0d8cc1ef45e5dba426cd9ef45c2e3dea6fa39 /gcc | |
parent | 838d430929f683ab4315032d9dda8e1d5f2be8e2 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/mips/mips.md | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/mips-div-1.c | 9 |
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} } } */ |