diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/epiphany/epiphany.c | 2 | ||||
-rw-r--r-- | gcc/config/epiphany/epiphany.md | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/epiphany/fcmp-1.c | 13 |
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); + } +} |