smatch_expressions: introduce deref_expression()
authorDan Carpenter <dan.carpenter@oracle.com>
Wed, 23 Jan 2013 12:28:38 +0000 (23 15:28 +0300)
committerDan Carpenter <dan.carpenter@oracle.com>
Wed, 23 Jan 2013 12:28:38 +0000 (23 15:28 +0300)
You give it the expression for "p" and it gives you "*p".

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch_expressions.c
smatch_extra.h

index 8c56e13..6bdf444 100644 (file)
@@ -37,6 +37,16 @@ struct expression *member_expression(struct expression *deref, int op, struct id
        return expr;
 }
 
+struct expression *deref_expression(struct expression *expr)
+{
+       struct expression *preop;
+
+       preop = alloc_expression(pos, EXPR_PREOP);
+       preop->unop = expr;
+       preop->op = '*';
+       return preop;
+}
+
 struct expression *assign_expression(struct expression *left, struct expression *right)
 {
        struct expression *expr;
index c77f77b..37cdeae 100644 (file)
@@ -143,6 +143,7 @@ void function_comparison(int comparison, struct expression *expr, sval_t sval, i
 struct expression *zero_expr();
 struct expression *value_expr(long long val);
 struct expression *member_expression(struct expression *deref, int op, struct ident *member);
+struct expression *deref_expression(struct expression *expr);
 struct expression *assign_expression(struct expression *left, struct expression *right);
 struct expression *symbol_expression(struct symbol *sym);