The type of logical operands should be bool. Signed-off-by: Xi Wang <xi.wang@xxxxxxxxx> --- simplify.c seems to assume so. case OP_AND_BOOL: if (value == 1) return replace_with_pseudo(insn, insn->src1); --- evaluate.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/evaluate.c b/evaluate.c index c345a50..8954ff2 100644 --- a/evaluate.c +++ b/evaluate.c @@ -873,6 +873,8 @@ static struct symbol *evaluate_logical(struct expression *expr) return NULL; expr->ctype = &bool_ctype; + expr->left = cast_to(expr->left, &bool_ctype); + expr->right = cast_to(expr->right, &bool_ctype); if (expr->flags) { if (!(expr->left->flags & expr->right->flags & Int_const_expr)) expr->flags = 0; -- 1.8.1.2 -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html