On Fri, 10 Jun 2016, Alexander Monakov wrote: > On Wed, 1 Jun 2016, Richard Biener wrote: > > > On Wed, 1 Jun 2016, Richard Biener wrote: > > > > 2016-06-01 Richard Biener <rguent...@suse.de> > > > > > > > > * match.pd ((A & B) - (A & ~B) -> B - (A ^ B)): Add missing :c. > > > > (relational patterns): Use :c to avoid pattern duplications. > > > > > > Should the same treatment be applied to recently added IFN_MUL_OVERFLOW > > > patterns (lines 2625-2643 in current match.pd)? > > > > Ah, yeah - I missed those appearantly. > > Here's a patch. Bootstrapped/regtested on x86_64, OK to apply?
Ok. Thanks, Richard. > Thanks. > Alexander > > * match.pd (-1 / B < A): Use :c to avoid pattern duplication. > > diff --git a/gcc/match.pd b/gcc/match.pd > index fe71115..7d4beea 100644 > --- a/gcc/match.pd > +++ b/gcc/match.pd > @@ -2626,22 +2626,12 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) > && types_match (TREE_TYPE (@0), TREE_TYPE (@1))) > (out (imagpart @2) { build_zero_cst (TREE_TYPE (@0)); })))) > > -/* For unsigned operands, A > -1 / B checks whether A * B would overflow. > +/* For unsigned operands, -1 / B < A checks whether A * B would overflow. > Simplify it to __builtin_mul_overflow (A, B, <unused>). */ > -/* -1 / B < A */ > (for cmp (lt ge) > out (ne eq) > (simplify > - (cmp (trunc_div:s integer_all_onesp @1) @0) > - (if (TYPE_UNSIGNED (TREE_TYPE (@0)) && !VECTOR_TYPE_P (TREE_TYPE (@0))) > - (with { tree t = TREE_TYPE (@0), cpx = build_complex_type (t); } > - (out (imagpart (IFN_MUL_OVERFLOW:cpx @0 @1)) { build_zero_cst (t); }))))) > - > -/* A > -1 / B */ > -(for cmp (gt le) > - out (ne eq) > - (simplify > - (cmp @0 (trunc_div:s integer_all_onesp @1)) > + (cmp:c (trunc_div:s integer_all_onesp @1) @0) > (if (TYPE_UNSIGNED (TREE_TYPE (@0)) && !VECTOR_TYPE_P (TREE_TYPE (@0))) > (with { tree t = TREE_TYPE (@0), cpx = build_complex_type (t); } > (out (imagpart (IFN_MUL_OVERFLOW:cpx @0 @1)) { build_zero_cst (t); }))))) > > -- Richard Biener <rguent...@suse.de> SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)