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.