Hi,

On Mon, 15 Feb 2016, Jakub Jelinek wrote:

> +  /* If op is default def SSA_NAME, there is no place to insert the
> +     new comparison.  Give up, unless we can use OP itself as the
> +     range test.  */
> +  if (op && SSA_NAME_IS_DEFAULT_DEF (op))
> +    {
> +      if (op == range->exp
> +       && ((TYPE_PRECISION (optype) == 1 && TYPE_UNSIGNED (optype))
> +           || TREE_CODE (optype) == BOOLEAN_TYPE)
> +       && (op == tem
> +           || (TREE_CODE (tem) == EQ_EXPR
> +               && TREE_OPERAND (tem, 0) == op
> +               && integer_onep (TREE_OPERAND (tem, 1))))
> +       && opcode != BIT_IOR_EXPR
> +       && (opcode != ERROR_MARK || oe->rank != BIT_IOR_EXPR))

Perhaps just give up always, instead of this complicated (and hence 
fragile) hackery?  Are you 100% sure you catched everything, are there 
testcases for each part of the condition (I miss at least one proving 
that making the condition true is correct)?


Ciao,
Michael.

Reply via email to