From 39bb00e1e1c31879e7374d3bfbc08791b1dffb6a Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Fri, 14 Dec 2012 15:02:56 +0300 Subject: [PATCH] estate: introduce get_implied_estate() It allocates an estate if there isn't already one created. Signed-off-by: Dan Carpenter --- smatch_estate.c | 12 ++++++++++++ smatch_extra.h | 1 + 2 files changed, 13 insertions(+) diff --git a/smatch_estate.c b/smatch_estate.c index c31b9dc5..711013d8 100644 --- a/smatch_estate.c +++ b/smatch_estate.c @@ -262,3 +262,15 @@ struct smatch_state *alloc_estate_range_list(struct range_list *rl) return state; } +struct smatch_state *get_implied_estate(struct expression *expr) +{ + struct smatch_state *state; + struct range_list *rl; + + state = get_state_expr(SMATCH_EXTRA, expr); + if (state) + return state; + if (!get_implied_range_list(expr, &rl)) + rl = whole_range_list(get_type(expr)); + return alloc_estate_range_list(rl); +} diff --git a/smatch_extra.h b/smatch_extra.h index 41ab4142..0e14583d 100644 --- a/smatch_extra.h +++ b/smatch_extra.h @@ -98,6 +98,7 @@ struct smatch_state *extra_undefined(struct symbol *type); struct range_list *range_list_union(struct range_list *one, struct range_list *two); int estate_get_single_value(struct smatch_state *state, sval_t *sval); +struct smatch_state *get_implied_estate(struct expression *expr); void function_comparison(int comparison, struct expression *expr, sval_t sval, int left); -- 2.11.4.GIT