From dc5b11916a2e318bd15d60f6cfd01d1e306ffbfb Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Wed, 11 Sep 2019 08:22:51 +0000 Subject: [PATCH] revert: match.pd: Add flag_unsafe_math_optimizations check before deciding on the widest type in... 2019-09-11 Richard Biener Revert 2019-09-09 Barnaby Wilks * match.pd: Add flag_unsafe_math_optimizations check before deciding on the widest type in a binary math operation. * gcc.dg/fold-binary-math-casts.c: New test. From-SVN: r275632 --- gcc/ChangeLog | 8 +++ gcc/match.pd | 12 +--- gcc/testsuite/ChangeLog | 7 +++ gcc/testsuite/gcc.dg/fold-binary-math-casts.c | 58 ------------------- 4 files changed, 17 insertions(+), 68 deletions(-) delete mode 100644 gcc/testsuite/gcc.dg/fold-binary-math-casts.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a0badf5ac96..0aa93bceb4b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2019-09-11 Richard Biener + + Revert + 2019-09-09 Barnaby Wilks + + * match.pd: Add flag_unsafe_math_optimizations check + before deciding on the widest type in a binary math operation. + 2019-09-10 Richard Sandiford * doc/tm.texi.in: Document that exactly one of CALL_USED_REGISTERS diff --git a/gcc/match.pd b/gcc/match.pd index 309a094071b..05009bb7a5a 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -5056,18 +5056,10 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) && newtype == type && types_match (newtype, type)) (op (convert:newtype @1) (convert:newtype @2)) - (with - { - if (!flag_unsafe_math_optimizations) - { - if (TYPE_PRECISION (ty1) > TYPE_PRECISION (newtype)) + (with { if (TYPE_PRECISION (ty1) > TYPE_PRECISION (newtype)) newtype = ty1; - if (TYPE_PRECISION (ty2) > TYPE_PRECISION (newtype)) - newtype = ty2; - } - } - + newtype = ty2; } /* Sometimes this transformation is safe (cannot change results through affecting double rounding cases) and sometimes it is not. If NEWTYPE is diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bbb5d9520fb..8b3dfbbecf0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2019-09-11 Richard Biener + + Revert + 2019-09-09 Barnaby Wilks + + * gcc.dg/fold-binary-math-casts.c: New test. + 2019-09-10 Marek Polacek PR c++/91673 - ICE with noexcept in alias-declaration. diff --git a/gcc/testsuite/gcc.dg/fold-binary-math-casts.c b/gcc/testsuite/gcc.dg/fold-binary-math-casts.c deleted file mode 100644 index 53c247fa143..00000000000 --- a/gcc/testsuite/gcc.dg/fold-binary-math-casts.c +++ /dev/null @@ -1,58 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-Ofast -fdump-tree-optimized" } */ - -#include - -float -f (float x, float y) -{ - double z = 1.0 / x; - return z * y; -} - -float -g (float x, float y) -{ - double a = 1.0 / x; - double b = 1.0 / y; - long double k = x*x*x*x*x*x; - - return a + b - k; -} - -float -h (float x) -{ - double a = x * 2.0; - double b = a / 3.5f; - return a + b; -} - -float -i (float y, float z) -{ - return pow (y, 2.0) / (double) (y + z); -} - -float -j (float x, float y) -{ - double t = 4.0 * x; - double z = t + y; - return z; -} - -float -k (float a) -{ - return 1.0 / sqrtf (a); -} - -float -l (float a) -{ - return (double) a * (a / 2.0); -} - -/* { dg-final { scan-tree-dump-not "\\(double\\)" "optimized" } } */ -/* { dg-final { scan-tree-dump-not "\\(float\\)" "optimized" } } */