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:
parent
3d34b7afae
commit
dc5b11916a
@ -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
|
||||||
|
12
gcc/match.pd
12
gcc/match.pd
@ -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
|
||||||
|
@ -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.
|
||||||
|
@ -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" } } */
|
|
Loading…
Reference in New Issue
Block a user