From 075c428226f21a5de3ba8b308278b189c5189005 Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Wed, 13 Jan 2010 14:22:13 +0300 Subject: [PATCH] implied cleanup: clean handle_comparison() Signed-off-by: Dan Carpenter --- smatch_implied.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/smatch_implied.c b/smatch_implied.c index ec97c17c..47d2fbba 100644 --- a/smatch_implied.c +++ b/smatch_implied.c @@ -335,22 +335,26 @@ static void handle_comparison(struct expression *expr, char *name; struct sm_state *sm; long long value; - int lr = RIGHT; + int lr; - if (!get_value(expr->left, &value)) { - if (!get_value(expr->right, &value)) - return; + if (get_value(expr->right, &value)) lr = LEFT; - } + else if (get_value(expr->left, &value)) + lr = RIGHT; + else + return; + if (lr == LEFT) name = get_implication_variable(expr->left, &sym); else name = get_implication_variable(expr->right, &sym); if (!name || !sym) goto free; + sm = get_sm_state(SMATCH_EXTRA, name, sym); if (!sm) goto free; + get_eq_neq(sm, expr->op, tmp_range_list(value), lr, __get_cur_slist(), implied_true, implied_false); delete_state_slist(implied_true, SMATCH_EXTRA, name, sym); delete_state_slist(implied_false, SMATCH_EXTRA, name, sym); -- 2.11.4.GIT