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:
Zdenek Dvorak 2006-11-23 00:11:15 +01:00 committed by Zdenek Dvorak
parent cbad228156
commit 0446c9f3a7
4 changed files with 44 additions and 2 deletions

View File

@ -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.

View File

@ -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:
{

View File

@ -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

View 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;
}