Commit dc5b1191 by Richard Biener Committed by Richard Biener

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
parent 3d34b7af
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
......
...@@ -5056,18 +5056,10 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) ...@@ -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
......
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.
......
/* { 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" } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment