From: Dan Carpenter Date: Mon, 15 Jul 2013 06:40:20 +0000 (+0300) Subject: math: introduce get_absolute_rl() X-Git-Tag: 1.59 X-Git-Url: https://repo.or.cz/w/smatch.git/commitdiff_plain/eaad2f5813fd15c0a2133f9fb64397601750d78d math: introduce get_absolute_rl() It's like get_implied_rl() but it always returns a range list even if it's just the whole range. Signed-off-by: Dan Carpenter --- diff --git a/smatch_extra.h b/smatch_extra.h index a2e11a18..937ba88c 100644 --- a/smatch_extra.h +++ b/smatch_extra.h @@ -79,6 +79,7 @@ void filter_top_rl(struct range_list_stack **rl_stack, sval_t sval); struct range_list *rl_truncate_cast(struct symbol *type, struct range_list *rl); struct range_list *cast_rl(struct symbol *type, struct range_list *rl); int get_implied_rl(struct expression *expr, struct range_list **rl); +int get_absolute_rl(struct expression *expr, struct range_list **rl); int get_implied_rl_var_sym(const char *var, struct symbol *sym, struct range_list **rl); void free_rl(struct range_list **rlist); diff --git a/smatch_math.c b/smatch_math.c index c1643dc3..a6cbc2b2 100644 --- a/smatch_math.c +++ b/smatch_math.c @@ -826,6 +826,14 @@ int get_implied_rl(struct expression *expr, struct range_list **rl) return 0; } +int get_absolute_rl(struct expression *expr, struct range_list **rl) +{ + *rl = _get_rl(expr, RL_ABSOLUTE); + if (!*rl) + *rl = alloc_whole_rl(get_type(expr)); + return 1; +} + int get_implied_rl_var_sym(const char *var, struct symbol *sym, struct range_list **rl) { struct smatch_state *state;