[Bug tree-optimization/34099] [4.3 Regression] optimizer problem
rguenth at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Thu Nov 15 15:08:00 GMT 2007
------- Comment #4 from rguenth at gcc dot gnu dot org 2007-11-15 15:08 -------
This looks like this old bug that evaluate_stmt() sets results to UNDEFINED.
As
we visit
D.26933_16 = __t_14 * D.26932_15;
the result should become VARYING, but we make it UNDEFINED. Because also
likely_value () returns UNDEFINED for it. Because in the process of setting
__t we use undefined operands (but those get overwritten).
D.26929_10 = IMAGPART_EXPR <__t_6(D)>;
__t_11 = COMPLEX_EXPR <b$_M_value$real_24, D.26929_10>;
D.26931_13 = REALPART_EXPR <__t_11>;
__t_14 = COMPLEX_EXPR <D.26931_13, b$_M_value$imag_23>;
D.26932_15 = COMPLEX_EXPR <a$_M_value$real_21, a$_M_value$imag_22>;
D.26933_16 = __t_14 * D.26932_15;
so at least
has_constant_operand = false;
FOR_EACH_SSA_TREE_OPERAND (use, stmt, iter, SSA_OP_USE | SSA_OP_VUSE)
{
prop_value_t *val = get_value (use);
if (val->lattice_val == UNDEFINED)
return UNDEFINED;
if (val->lattice_val == CONSTANT)
has_constant_operand = true;
}
doesn't look conservatively correct, because we pro-actively prefer UNDEFINED
here.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34099
More information about the Gcc-bugs
mailing list