revert: match.pd: Add flag_unsafe_math_optimizations check before deciding on the widest type in...

2019-09-11  Richard Biener  <rguenther@suse.de>

	Revert
	2019-09-09  Barnaby Wilks  <barnaby.wilks@arm.com>

	* 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
This commit is contained in:
Richard Biener 2019-09-11 08:22:51 +00:00 committed by Richard Biener
parent 3d34b7afae
commit dc5b11916a
4 changed files with 17 additions and 68 deletions

View File

@ -1,3 +1,11 @@
2019-09-11 Richard Biener <rguenther@suse.de>
Revert
2019-09-09 Barnaby Wilks <barnaby.wilks@arm.com>
* match.pd: Add flag_unsafe_math_optimizations check
before deciding on the widest type in a binary math operation.
2019-09-10 Richard Sandiford <richard.sandiford@arm.com> 2019-09-10 Richard Sandiford <richard.sandiford@arm.com>
* doc/tm.texi.in: Document that exactly one of CALL_USED_REGISTERS * doc/tm.texi.in: Document that exactly one of CALL_USED_REGISTERS

View File

@ -5056,18 +5056,10 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
&& newtype == type && newtype == type
&& types_match (newtype, type)) && types_match (newtype, type))
(op (convert:newtype @1) (convert:newtype @2)) (op (convert:newtype @1) (convert:newtype @2))
(with (with { if (TYPE_PRECISION (ty1) > TYPE_PRECISION (newtype))
{
if (!flag_unsafe_math_optimizations)
{
if (TYPE_PRECISION (ty1) > TYPE_PRECISION (newtype))
newtype = ty1; newtype = ty1;
if (TYPE_PRECISION (ty2) > TYPE_PRECISION (newtype)) if (TYPE_PRECISION (ty2) > TYPE_PRECISION (newtype))
newtype = ty2; newtype = ty2; }
}
}
/* Sometimes this transformation is safe (cannot /* Sometimes this transformation is safe (cannot
change results through affecting double rounding change results through affecting double rounding
cases) and sometimes it is not. If NEWTYPE is cases) and sometimes it is not. If NEWTYPE is

View File

@ -1,3 +1,10 @@
2019-09-11 Richard Biener <rguenther@suse.de>
Revert
2019-09-09 Barnaby Wilks <barnaby.wilks@arm.com>
* gcc.dg/fold-binary-math-casts.c: New test.
2019-09-10 Marek Polacek <polacek@redhat.com> 2019-09-10 Marek Polacek <polacek@redhat.com>
PR c++/91673 - ICE with noexcept in alias-declaration. PR c++/91673 - ICE with noexcept in alias-declaration.

View File

@ -1,58 +0,0 @@
/* { dg-do compile } */
/* { dg-options "-Ofast -fdump-tree-optimized" } */
#include <math.h>
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" } } */