aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoern Rennecke <joern.rennecke@embecosm.com>2014-12-03 16:25:25 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>2014-12-03 16:25:25 +0000
commitf577844da99285ae853496b63217c16fdb017e56 (patch)
treeb29c690c7d45d641edcc74636368bb9ab7a954f3
parent028c9c9ed7b71ed186829471b7b704ddfb0c5e26 (diff)
downloadgcc-f577844da99285ae853496b63217c16fdb017e56.zip
gcc-f577844da99285ae853496b63217c16fdb017e56.tar.gz
gcc-f577844da99285ae853496b63217c16fdb017e56.tar.bz2
epiphany.c (epiphany_override_options): If TARGET_SOFT_CMPSF is not enabled, set flag_finite_math_only.
gcc: * config/epiphany/epiphany.c (epiphany_override_options): If TARGET_SOFT_CMPSF is not enabled, set flag_finite_math_only. * config/epiphany/epiphany.md (mov<mode>cc): Don't use reverse_condition_maybe_unordered if flag_finite_math_only is set. gcc/testsuite: * gcc.target/epiphany/fcmp-1.c: New test. From-SVN: r218323
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/epiphany/epiphany.c2
-rw-r--r--gcc/config/epiphany/epiphany.md2
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.target/epiphany/fcmp-1.c13
5 files changed, 27 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 67cc0e1..f361ce2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2014-12-03 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ * config/epiphany/epiphany.c (epiphany_override_options):
+ If TARGET_SOFT_CMPSF is not enabled, set flag_finite_math_only.
+ * config/epiphany/epiphany.md (mov<mode>cc): Don't use
+ reverse_condition_maybe_unordered if flag_finite_math_only is set.
+
2014-12-03 Andrew Stubbs <ams@codesourcery.com>
Revert:
diff --git a/gcc/config/epiphany/epiphany.c b/gcc/config/epiphany/epiphany.c
index 3890149..92024aa 100644
--- a/gcc/config/epiphany/epiphany.c
+++ b/gcc/config/epiphany/epiphany.c
@@ -1542,6 +1542,8 @@ epiphany_override_options (void)
if (epiphany_stack_offset & 3)
error ("stack_offset must be a multiple of 4");
epiphany_stack_offset = (epiphany_stack_offset + 3) & -4;
+ if (!TARGET_SOFT_CMPSF)
+ flag_finite_math_only = 1;
/* This needs to be done at start up. It's convenient to do it here. */
epiphany_init ();
diff --git a/gcc/config/epiphany/epiphany.md b/gcc/config/epiphany/epiphany.md
index 822c701..a6f6b74 100644
--- a/gcc/config/epiphany/epiphany.md
+++ b/gcc/config/epiphany/epiphany.md
@@ -1960,7 +1960,7 @@
&& !rtx_equal_p (operands[0], operands[3]))
{
rtx tmp = operands[2]; operands[2] = operands[3]; operands[3] = tmp;
- code = (FLOAT_MODE_P (GET_MODE (cmp_op0))
+ code = (FLOAT_MODE_P (GET_MODE (cmp_op0)) && !flag_finite_math_only
? reverse_condition_maybe_unordered (code)
: reverse_condition (code));
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 38f1d7b..52fdc16 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2014-12-03 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ * gcc.target/epiphany/fcmp-1.c: New test.
+
2014-12-03 Petr Murzin <petr.murzin@intel.com>
* gcc.target/i386/avx512bw-kunpckdq-1.c: Fix regexps for assembler
diff --git a/gcc/testsuite/gcc.target/epiphany/fcmp-1.c b/gcc/testsuite/gcc.target/epiphany/fcmp-1.c
new file mode 100644
index 0000000..d935eb4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/epiphany/fcmp-1.c
@@ -0,0 +1,13 @@
+/* { dg-options "-Ofast -mno-soft-cmpsf" } */
+
+#if 0
+#include <math.h>
+#else
+extern float fminf (float, float);
+#endif
+void test(int a, float *b, int n)
+{
+ if (n < 10) {
+ *b = a*fminf(0.0,1.0*a);
+ }
+}