From: Richard Biener Date: Tue, 21 Apr 2015 12:38:32 +0000 (+0000) Subject: re PR middle-end/65788 (416.gamess in SPEC CPU 2006 failed to build) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9588d24871d34967389a1396e3df16c61eacd54c;p=gcc.git re PR middle-end/65788 (416.gamess in SPEC CPU 2006 failed to build) 2015-04-21 Richard Biener PR tree-optimization/65788 * tree-ssa-ccp.c (evaluate_stmt): Evaluate to UNDEFINED early. From-SVN: r222266 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 791db049d58..19b0ed417e7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2015-04-21 Richard Biener + + PR tree-optimization/65788 + * tree-ssa-ccp.c (evaluate_stmt): Evaluate to UNDEFINED early. + 2015-04-21 Richard Biener * config/i386/i386.c (ix86_builtin_vectorization_cost): Scale diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index 79f6afbed98..47fbf7f113e 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -1756,6 +1756,14 @@ evaluate_stmt (gimple stmt) val.mask = 0; } } + /* If the statement result is likely UNDEFINED, make it so. */ + else if (likelyvalue == UNDEFINED) + { + val.lattice_val = UNDEFINED; + val.value = NULL_TREE; + val.mask = 0; + return val; + } /* Resort to simplification for bitwise tracking. */ if (flag_tree_bit_ccp @@ -1890,7 +1898,7 @@ evaluate_stmt (gimple stmt) if (flag_tree_bit_ccp && ((is_constant && TREE_CODE (val.value) == INTEGER_CST) - || (!is_constant && likelyvalue != UNDEFINED)) + || !is_constant) && gimple_get_lhs (stmt) && TREE_CODE (gimple_get_lhs (stmt)) == SSA_NAME) { @@ -1918,22 +1926,11 @@ evaluate_stmt (gimple stmt) } } + /* The statement produced a nonconstant value. */ if (!is_constant) { - /* The statement produced a nonconstant value. If the statement - had UNDEFINED operands, then the result of the statement - should be UNDEFINED. Otherwise, the statement is VARYING. */ - if (likelyvalue == UNDEFINED) - { - val.lattice_val = likelyvalue; - val.mask = 0; - } - else - { - val.lattice_val = VARYING; - val.mask = -1; - } - + val.lattice_val = VARYING; + val.mask = -1; val.value = NULL_TREE; }