On Sat, Dec 03, 2016 at 07:19:13PM -0600, Segher Boessenkool wrote: > [ I did not see this patch before, sorry. ] > > This causes the second half of PR78638. > > On Thu, Dec 01, 2016 at 04:30:08PM +0100, Dominik Vogt wrote: > > --- a/gcc/combine.c > > +++ b/gcc/combine.c > > @@ -5600,6 +5600,18 @@ combine_simplify_rtx (rtx x, machine_mode op0_mode, > > int in_dest, > > && OBJECT_P (SUBREG_REG (XEXP (x, 0))))))) > > { > > rtx cond, true_rtx, false_rtx; > > + unsigned HOST_WIDE_INT nz; > > + > > + /* If the operation is an AND wrapped in a SIGN_EXTEND or > > ZERO_EXTEND with > > + either operand being just a constant single bit value, do nothing since > > + IF_THEN_ELSE is likely to increase the expression's complexity. */ > > + if (HWI_COMPUTABLE_MODE_P (mode) > > + && pow2p_hwi (nz = nonzero_bits (x, mode)) > > + && ! ((code == SIGN_EXTEND || code == ZERO_EXTEND) > > + && GET_CODE (XEXP (x, 0)) == AND > > + && CONST_INT_P (XEXP (XEXP (x, 0), 0)) > > + && UINTVAL (XEXP (XEXP (x, 0), 0)) == nz)) > > + return x; > > The code does not match the comment: the "!" should not be there. How > did it fix anything on s390 *with* that "!"? That does not make much > sense.
Sorry for breaking this. With the constant changes in the patterns this is supposed to fix it seems I've lost track of the status quo. I'll check what went wrong with the patch; in the mean time Andreas will revert this, or if it's urgent, feel free to do that yourself. Ciao Dominik ^_^ ^_^ -- Dominik Vogt IBM Germany