re PR tree-optimization/29921 (internal compiler error: in set_lattice_value, at tree-ssa-ccp.c:437)
PR tree-optimization/29921 * fold-const.c (operand_equal_p): Without HONOR_SIGNED_ZEROS, consider signed and unsigned zero equal. * gcc.dg/pr29921.c: New test. From-SVN: r119102
This commit is contained in:
parent
cbad228156
commit
0446c9f3a7
@ -1,3 +1,9 @@
|
||||
2006-11-23 Zdenek Dvorak <dvorakz@suse.cz>
|
||||
|
||||
PR tree-optimization/29921
|
||||
* fold-const.c (operand_equal_p): Without HONOR_SIGNED_ZEROS, consider
|
||||
signed and unsigned zero equal.
|
||||
|
||||
2006-11-22 Peter Bergner <bergner@vnet.ibm.com>
|
||||
|
||||
* config/rs6000/rs6000.c (get_store_dest): New.
|
||||
|
@ -2584,8 +2584,19 @@ operand_equal_p (tree arg0, tree arg1, unsigned int flags)
|
||||
return tree_int_cst_equal (arg0, arg1);
|
||||
|
||||
case REAL_CST:
|
||||
return REAL_VALUES_IDENTICAL (TREE_REAL_CST (arg0),
|
||||
TREE_REAL_CST (arg1));
|
||||
if (REAL_VALUES_IDENTICAL (TREE_REAL_CST (arg0),
|
||||
TREE_REAL_CST (arg1)))
|
||||
return 1;
|
||||
|
||||
|
||||
if (!HONOR_SIGNED_ZEROS (TYPE_MODE (TREE_TYPE (arg0))))
|
||||
{
|
||||
/* If we do not distinguish between signed and unsigned zero,
|
||||
consider them equal. */
|
||||
if (real_zerop (arg0) && real_zerop (arg1))
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
||||
case VECTOR_CST:
|
||||
{
|
||||
|
@ -1,3 +1,8 @@
|
||||
2006-11-23 Zdenek Dvorak <dvorakz@suse.cz>
|
||||
|
||||
PR tree-optimization/29921
|
||||
* gcc.dg/pr29921.c: New test.
|
||||
|
||||
2006-11-22 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
|
||||
|
||||
PR fortran/29441
|
||||
|
20
gcc/testsuite/gcc.dg/pr29921.c
Normal file
20
gcc/testsuite/gcc.dg/pr29921.c
Normal file
@ -0,0 +1,20 @@
|
||||
/* With -ffast-math, the latice value for t changes from -0.0 to 0.0 in this
|
||||
testcase. */
|
||||
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -ffast-math" } */
|
||||
|
||||
double test (int param)
|
||||
{
|
||||
double a = 0.0, b = -1.0, t;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 100; i++)
|
||||
{
|
||||
t = a * b;
|
||||
if (param)
|
||||
b = 2.0;
|
||||
}
|
||||
|
||||
return t;
|
||||
}
|
Loading…
Reference in New Issue
Block a user