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:
parent
d33da5cd57
commit
1cdaa21198
@ -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
|
||||
|
@ -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>
|
||||
|
||||
|
13
gcc/testsuite/gcc.c-torture/execute/pr43629.c
Normal file
13
gcc/testsuite/gcc.c-torture/execute/pr43629.c
Normal 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;
|
||||
}
|
@ -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. */
|
||||
|
Loading…
Reference in New Issue
Block a user