From 830c2d72395629cb94b61dd4392dffae334dced9 Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Tue, 30 Oct 2012 14:48:10 +0300 Subject: [PATCH] sval: add interim helpers ll_to_sval() and drange_to_drange_sval() These will make converting easier and I will delete them at the end. Signed-off-by: Dan Carpenter --- smatch.h | 1 + smatch_extra.h | 2 ++ smatch_ranges.c | 5 +++++ smatch_sval.c | 9 +++++++++ 4 files changed, 17 insertions(+) diff --git a/smatch.h b/smatch.h index 8fccfd9a..ce649aae 100644 --- a/smatch.h +++ b/smatch.h @@ -527,5 +527,6 @@ sval_t sval_preop(sval_t sval, int op); sval_t sval_binop(sval_t left, int op, sval_t right); const char *sval_to_str(sval_t sval); long long sval_to_ll(sval_t sval); +sval_t ll_to_sval(long long val); #endif /* !SMATCH_H_ */ diff --git a/smatch_extra.h b/smatch_extra.h index 1969323e..3dff013b 100644 --- a/smatch_extra.h +++ b/smatch_extra.h @@ -108,6 +108,7 @@ int true_comparison_range_lr(int comparison, struct data_range *var, struct data int false_comparison_range_lr(int comparison, struct data_range *var, struct data_range *val, int left); struct data_range *alloc_range(long long min, long long max); struct data_range_sval *alloc_range_sval(sval_t min, sval_t max); +struct data_range_sval *drange_to_drange_sval(struct data_range *drange); void tack_on(struct range_list **list, struct data_range *drange); int in_list_exact(struct range_list *list, struct data_range *drange); @@ -136,3 +137,4 @@ struct related_list *clone_related_list(struct related_list *related); void remove_from_equiv(const char *name, struct symbol *sym); void remove_from_equiv_expr(struct expression *expr); void set_equiv_state_expr(int id, struct expression *expr, struct smatch_state *state); + diff --git a/smatch_ranges.c b/smatch_ranges.c index f02b72a2..1e820d71 100644 --- a/smatch_ranges.c +++ b/smatch_ranges.c @@ -281,6 +281,11 @@ struct data_range_sval *alloc_range_sval(sval_t min, sval_t max) return alloc_range_helper_sval(min, max, 0); } +struct data_range_sval *drange_to_drange_sval(struct data_range *drange) +{ + return alloc_range_helper_sval(ll_to_sval(drange->min), ll_to_sval(drange->max), 0); +} + struct data_range *alloc_range_perm(long long min, long long max) { return alloc_range_helper(min, max, 1); diff --git a/smatch_sval.c b/smatch_sval.c index d205dac7..16fdb72c 100644 --- a/smatch_sval.c +++ b/smatch_sval.c @@ -271,6 +271,15 @@ long long sval_to_ll(sval_t sval) return sval.value; } +sval_t ll_to_sval(long long val) +{ + sval_t ret; + + ret.type = &llong_ctype; + ret.value = val; + return ret; +} + static void free_svals(struct symbol *sym) { clear_sval_alloc(); -- 2.11.4.GIT