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.