http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57286
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2013-05-15
Ever confirmed|0 |1
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
folding
(gdb) call debug_gimple_stmt (stmt)
vect_patt_667.85_618 = VEC_COND_EXPR <vect__66.83_624 < { 0.0, 0.0 }, { -1, -1
}, { 1, 1 }>;
cycle via
14256 /* Convert A ? 1 : B into A || B if A and B are truth values. */
14257 if (code == VEC_COND_EXPR ? integer_all_onesp (arg1) :
integer_onep (arg1)
14258 && truth_value_p (TREE_CODE (arg0))
14259 && truth_value_p (TREE_CODE (op2))
14260 && (code == VEC_COND_EXPR || !VECTOR_TYPE_P (type)))
14261 return fold_build2_loc (loc, code == VEC_COND_EXPR
14262 ? BIT_IOR_EXPR : TRUTH_ORIF_EXPR,
14263 type, fold_convert_loc (loc, type,
arg0), op2);
and
#2 0x000000000084f783 in fold_binary_op_with_conditional_arg (loc=0,
code=BIT_IOR_EXPR, type=0x7ffff6c27540, op0=0x7ffff6c7e500,
op1=0x7ffff6c7b5c0, cond=0x7ffff6c7e500, arg=0x7ffff6c7b5c0,
cond_first_p=1) at /space/rguenther/src/svn/trunk/gcc/fold-const.c:6129
6129 return fold_build3_loc (loc, cond_code, type, test, lhs, rhs);
only one variant should be canonical, obvious for the vector case but
eventually not for the scalar case.