estate: introduce get_implied_estate()
authorDan Carpenter <dan.carpenter@oracle.com>
Fri, 14 Dec 2012 12:02:56 +0000 (14 15:02 +0300)
committerDan Carpenter <dan.carpenter@oracle.com>
Fri, 14 Dec 2012 12:02:56 +0000 (14 15:02 +0300)
It allocates an estate if there isn't already one created.

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

index c31b9dc..711013d 100644 (file)
@@ -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);
+}
index 41ab414..0e14583 100644 (file)
@@ -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);