From: Dan Carpenter Date: Wed, 23 Jan 2013 12:28:38 +0000 (+0300) Subject: smatch_expressions: introduce deref_expression() X-Git-Tag: 1.57~43 X-Git-Url: https://repo.or.cz/w/smatch.git/commitdiff_plain/23b4956a03d2025871e4d180f2e72dd7ef02614f smatch_expressions: introduce deref_expression() You give it the expression for "p" and it gives you "*p". Signed-off-by: Dan Carpenter --- diff --git a/smatch_expressions.c b/smatch_expressions.c index 8c56e137..6bdf4448 100644 --- a/smatch_expressions.c +++ b/smatch_expressions.c @@ -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; diff --git a/smatch_extra.h b/smatch_extra.h index c77f77b3..37cdeaed 100644 --- a/smatch_extra.h +++ b/smatch_extra.h @@ -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);