From e3915483882e461bbb6b9752a5bf22c6289c285b Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Mon, 30 Mar 2015 16:04:39 +0300 Subject: [PATCH] extra: don't set true false states if they are the same on both sides If both the true and false states are the same then we shouldn't change the original state. We are possibly just overwriting implications and, regardless, it is always a waste of resources. Signed-off-by: Dan Carpenter --- smatch_extra.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/smatch_extra.c b/smatch_extra.c index ccb62182..f9fad73d 100644 --- a/smatch_extra.c +++ b/smatch_extra.c @@ -1234,6 +1234,16 @@ static void handle_comparison(struct symbol *type, struct expression *left, int right_false_state = decrement_state(right_false_state); } + if (estate_rl(left_true_state) && estates_equiv(left_true_state, left_false_state)) { + left_true_state = NULL; + left_false_state = NULL; + } + + if (estate_rl(right_true_state) && estates_equiv(right_true_state, right_false_state)) { + right_true_state = NULL; + right_false_state = NULL; + } + set_extra_expr_true_false(left, left_true_state, left_false_state); set_extra_expr_true_false(right, right_true_state, right_false_state); } -- 2.11.4.GIT