math: introduce get_absolute_rl()1.59
authorDan Carpenter <dan.carpenter@oracle.com>
Mon, 15 Jul 2013 06:40:20 +0000 (15 09:40 +0300)
committerDan Carpenter <dan.carpenter@oracle.com>
Mon, 15 Jul 2013 06:40:20 +0000 (15 09:40 +0300)
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 <dan.carpenter@oracle.com>
smatch_extra.h
smatch_math.c

index a2e11a1..937ba88 100644 (file)
@@ -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);
index c1643dc..a6cbc2b 100644 (file)
@@ -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;