> From: Marc Glisse <marc.gli...@inria.fr> > Date: Tue, 14 May 2013 13:47:23 +0200
> Here is what I tested during the night, I'll just rename the function. > I took the chance to remove an unnecessary alternative in TRUTH_XOR_EXPR. > > Passes bootstrap+testsuite on x86_64-linux-gnu. > > 2013-05-14 Marc Glisse <marc.gli...@inria.fr> > > gcc/ > * fold-const.c (fold_negate_expr): Handle vectors. > (fold_truth_not_expr): Make it static. > (fold_invert_truth): New static function. > (invert_truthvalue_loc): Handle vectors. Do not call > fold_truth_not_expr directly. > (fold_unary_loc) <BIT_NOT_EXPR>: Handle comparisons. > <TRUTH_NOT_EXPR>: Do not cast to boolean. > (fold_comparison): Handle vector constants. > (fold_binary_loc) <TRUTH_XOR_EXPR>: Remove redundant code. > (fold_ternary_loc) <VEC_COND_EXPR>: Adapt more COND_EXPR optimizations. > * tree.h (fold_truth_not_expr): Remove declaration. > > gcc/testsuite/ > * g++.dg/ext/vector22.C: New testcase. > * gcc.dg/binop-xor3.c: Remove xfail. Looks like the removed xfail caused regressions for about half of all targets; there's now PR57313 opened for this. Maybe an rtl test like BRANCH_COSTS or rtx_cost now matters in the decision? brgds, H-P