[patch middle-end]: Missed optimization for (x ~y) | (~x y)

2011-04-20 Thread Kai Tietz
Hello, well the bonus points might gain somebody else ... But this adds a missing optimization for tree level implemented in fold-const. ChangeLog gcc/ 2011-04-20 Kai Tietz * fold-const.c (fold_binary_loc): Add handling for (X ~Y) | (~X Y) and (X !Y) | (!X Y) optimization

Re: [patch middle-end]: Missed optimization for (x ~y) | (~x y)

2011-04-20 Thread Richard Henderson
On 04/20/2011 08:22 AM, Kai Tietz wrote: + if (TREE_CODE (arg0) == BIT_AND_EXPR +TREE_CODE (arg1) == BIT_AND_EXPR) +{ + tree a0, a1, l0, l1, n0, n1; + + a0 = fold_convert_loc (loc, type, TREE_OPERAND (arg1, 0)); + a1 = fold_convert_loc (loc, type,

Re: [patch middle-end]: Missed optimization for (x ~y) | (~x y)

2011-04-20 Thread Kai Tietz
2011/4/20 Richard Henderson r...@redhat.com: On 04/20/2011 08:22 AM, Kai Tietz wrote: +      if (TREE_CODE (arg0) == BIT_AND_EXPR +       TREE_CODE (arg1) == BIT_AND_EXPR) +        { +       tree a0, a1, l0, l1, n0, n1; + +       a0 = fold_convert_loc (loc, type, TREE_OPERAND (arg1, 0));

Re: [patch middle-end]: Missed optimization for (x ~y) | (~x y)

2011-04-20 Thread Richard Henderson
On 04/20/2011 08:50 AM, Kai Tietz wrote: + if (TREE_CODE (arg0) == TREE_CODE (arg1) +TREE_CODE (arg1) == TRUTH_AND_EXPR) Ok with these both explicitly testing TRUTH_AND_EXPR now. r~

Re: [patch middle-end]: Missed optimization for (x ~y) | (~x y)

2011-04-20 Thread Kai Tietz
2011/4/20 Jakub Jelinek ja...@redhat.com: On Wed, Apr 20, 2011 at 05:22:31PM +0200, Kai Tietz wrote: --- gcc.orig/gcc/fold-const.c 2011-04-20 17:10:39.478091900 +0200 +++ gcc/gcc/fold-const.c      2011-04-20 17:11:22.901039400 +0200 @@ -10660,6 +10660,28 @@ fold_binary_loc (location_t loc,    

Re: [patch middle-end]: Missed optimization for (x ~y) | (~x y)

2011-04-20 Thread Kai Tietz
2011/4/20 Richard Henderson r...@redhat.com: On 04/20/2011 08:50 AM, Kai Tietz wrote: +      if (TREE_CODE (arg0) == TREE_CODE (arg1) +       TREE_CODE (arg1) == TRUTH_AND_EXPR) Ok with these both explicitly testing TRUTH_AND_EXPR now. r~ Committed at revision 172776 with explicit