From afedfe1801b34076ba11545e7dd431a016097654 Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Sat, 14 Feb 2009 15:44:19 +0300 Subject: [PATCH] Add some more operations to get_value(). Signed-off-by: Dan Carpenter --- smatch_helper.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/smatch_helper.c b/smatch_helper.c index 6c934449..e3fa5d1c 100644 --- a/smatch_helper.c +++ b/smatch_helper.c @@ -291,21 +291,30 @@ static int _get_value(struct expression *expr, int *discard) else *discard = 1; break; - case EXPR_BINOP: + case EXPR_BINOP: { + int left, right; + if (!show_special(expr->op)) { *discard = 1; break; } + left = _get_value(expr->left, discard); + right = _get_value(expr->right, discard); if (!strcmp("*", show_special(expr->op))) { - ret = _get_value(expr->left, discard) - * _get_value(expr->right, discard); + ret = left * right; + } else if (!strcmp("/", show_special(expr->op))) { + ret = left / right; + } else if (!strcmp("+", show_special(expr->op))) { + ret = left + right; + } else if (!strcmp("-", show_special(expr->op))) { + ret = left - right; } else if (!strcmp("|", show_special(expr->op))) { - ret = _get_value(expr->left, discard) - | _get_value(expr->right, discard); + ret = left | right; } else { *discard = 1; } break; + } case EXPR_SIZEOF: if (expr->cast_type && get_base_type(expr->cast_type)) ret = (get_base_type(expr->cast_type))->bit_size / 8; -- 2.11.4.GIT