This fixes an incorrect assumption that results in && using shortcut logic on the true branch instead of the false branch. Signed-off-by: Daniel De Graaf <danieldegraaf@xxxxxxxxx> --- linearize.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/linearize.c b/linearize.c index 238ee5d..9247409 100644 --- a/linearize.c +++ b/linearize.c @@ -1389,7 +1389,10 @@ static pseudo_t linearize_logical(struct entrypoint *ep, struct expression *expr shortcut = alloc_const_expression(expr->pos, expr->op == SPECIAL_LOGICAL_OR); shortcut->ctype = expr->ctype; - return linearize_conditional(ep, expr, expr->left, shortcut, expr->right); + if (expr->op == SPECIAL_LOGICAL_OR) + return linearize_conditional(ep, expr, expr->left, shortcut, expr->right); + else + return linearize_conditional(ep, expr, expr->left, expr->right, shortcut); } static pseudo_t linearize_compare(struct entrypoint *ep, struct expression *expr) -- 1.6.5 -- 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