re PR tree-optimization/43629 (Struct to register optimization fails)

2010-04-02  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/43629
	* tree-ssa-ccp.c (likely_value): Reset all_undefined_operands
	if we have seen a constant value.

	* gcc.c-torture/execute/pr43629.c: New testcase.

From-SVN: r157944
This commit is contained in:
Richard Guenther 2010-04-02 16:50:04 +00:00 committed by Richard Biener
parent d33da5cd57
commit 1cdaa21198
4 changed files with 29 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2010-04-02 Richard Guenther <rguenther@suse.de>
PR tree-optimization/43629
* tree-ssa-ccp.c (likely_value): Reset all_undefined_operands
if we have seen a constant value.
2010-04-02 Joseph Myers <joseph@codesourcery.com>
* read-rtl.c (read_rtx_1): Give an error for EOF while looking for

View File

@ -1,3 +1,8 @@
2010-04-02 Richard Guenther <rguenther@suse.de>
PR tree-optimization/43629
* gcc.c-torture/execute/pr43629.c: New testcase.
2010-04-01 Janne Blomqvist <jb@gcc.gnu.org>
Dominique d'Humieres <dominiq@lps.ens.fr>

View File

@ -0,0 +1,13 @@
int flag;
extern void abort (void);
int main()
{
int x;
if (flag)
x = -1;
else
x &= 0xff;
if (x & ~0xff)
abort ();
return 0;
}

View File

@ -1,6 +1,6 @@
/* Conditional constant propagation pass for the GNU compiler.
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
2010 Free Software Foundation, Inc.
Adapted from original RTL SSA-CCP by Daniel Berlin <dberlin@dberlin.org>
Adapted to GIMPLE trees by Diego Novillo <dnovillo@redhat.com>
@ -558,6 +558,9 @@ likely_value (gimple stmt)
has_constant_operand = true;
}
if (has_constant_operand)
all_undefined_operands = false;
/* If the operation combines operands like COMPLEX_EXPR make sure to
not mark the result UNDEFINED if only one part of the result is
undefined. */