Lines Matching refs:rl

147 static void add_range_t(struct symbol *type, struct range_list **rl, sval_t min, sval_t max)  in add_range_t()  argument
151 add_range(rl, sval_cast(type, min), sval_cast(type, max)); in add_range_t()
157 add_range(rl, sval_cast(type, min), sval_cast(type, max)); in add_range_t()
162 add_range(rl, sval_cast(type, min), sval_cast(type, max)); in add_range_t()
173 add_range(rl, sval_type_min(type), sval_type_max(type)); in add_range_t()
181 add_range(rl, sval_type_min(type), sval_type_max(type)); in add_range_t()
184 add_range(rl, sval_type_val(type, 0), sval_cast(type, max)); in add_range_t()
190 add_range(rl, min, max); in add_range_t()
196 add_range(rl, sval_cast(type, min), sval_type_max(type)); in add_range_t()
202 add_range(rl, min, max); in add_range_t()
205 add_range(rl, sval_cast(type, min), sval_cast(type, max)); in add_range_t()
347 void filter_by_comparison(struct range_list **rl, int comparison, struct range_list *right) in filter_by_comparison() argument
349 struct range_list *left_orig = *rl; in filter_by_comparison()
351 struct range_list *ret_rl = *rl; in filter_by_comparison()
400 *rl = cast_rl(rl_type(*rl), ret_rl); in filter_by_comparison()
533 … expression *call, struct symbol *type, const char *str, const char **endp, struct range_list **rl) in str_to_rl_helper() argument
601 *rl = rl_tmp; in str_to_rl_helper()
610 struct range_list *rl = NULL; in str_to_dinfo() local
624 if (!get_implied_rl(arg, &rl)) in str_to_dinfo()
629 str_to_rl_helper(call, type, value, &c, &rl); in str_to_dinfo()
637 rl = rl_intersection(rl, math_rl); in str_to_dinfo()
641 rl = rl_intersection(rl, math_rl); in str_to_dinfo()
652 rl = filter_by_comparison_call(c, call, &c, rl); in str_to_dinfo()
655 rl = cast_rl(type, rl); in str_to_dinfo()
656 dinfo->value_ranges = rl; in str_to_dinfo()
659 static int rl_is_sane(struct range_list *rl) in rl_is_sane() argument
664 type = rl_type(rl); in rl_is_sane()
665 FOR_EACH_PTR(rl, tmp) { in rl_is_sane()
677 void str_to_rl(struct symbol *type, char *value, struct range_list **rl) in str_to_rl() argument
684 *rl = dinfo.value_ranges; in str_to_rl()
687 …ults_to_rl(struct expression *expr, struct symbol *type, const char *value, struct range_list **rl) in call_results_to_rl() argument
692 *rl = dinfo.value_ranges; in call_results_to_rl()
695 int is_whole_rl(struct range_list *rl) in is_whole_rl() argument
699 if (ptr_list_empty((struct ptr_list *)rl)) in is_whole_rl()
701 drange = first_ptr_list((struct ptr_list *)rl); in is_whole_rl()
707 int is_unknown_ptr(struct range_list *rl) in is_unknown_ptr() argument
712 if (is_whole_rl(rl)) in is_unknown_ptr()
715 FOR_EACH_PTR(rl, drange) { in is_unknown_ptr()
726 int is_whole_rl_non_zero(struct range_list *rl) in is_whole_rl_non_zero() argument
730 if (ptr_list_empty((struct ptr_list *)rl)) in is_whole_rl_non_zero()
732 drange = first_ptr_list((struct ptr_list *)rl); in is_whole_rl_non_zero()
739 drange = last_ptr_list((struct ptr_list *)rl); in is_whole_rl_non_zero()
745 sval_t rl_min(struct range_list *rl) in rl_min() argument
752 if (ptr_list_empty((struct ptr_list *)rl)) in rl_min()
754 drange = first_ptr_list((struct ptr_list *)rl); in rl_min()
758 sval_t rl_max(struct range_list *rl) in rl_max() argument
765 if (ptr_list_empty((struct ptr_list *)rl)) in rl_max()
767 drange = last_ptr_list((struct ptr_list *)rl); in rl_max()
771 int rl_to_sval(struct range_list *rl, sval_t *sval) in rl_to_sval() argument
775 if (!rl) in rl_to_sval()
778 min = rl_min(rl); in rl_to_sval()
779 max = rl_max(rl); in rl_to_sval()
786 struct symbol *rl_type(struct range_list *rl) in rl_type() argument
788 if (!rl) in rl_type()
790 return rl_min(rl).type; in rl_type()
818 struct range_list *rl = NULL; in alloc_rl() local
823 add_range(&rl, min, max); in alloc_rl()
824 return rl; in alloc_rl()
837 static bool collapse_pointer_rl(struct range_list **rl, sval_t min, sval_t max) in collapse_pointer_rl() argument
860 if (ptr_list_size((struct ptr_list *)*rl) < 8) in collapse_pointer_rl()
862 FOR_EACH_PTR(*rl, tmp) { in collapse_pointer_rl()
869 FOR_EACH_PTR(*rl, tmp) { in collapse_pointer_rl()
879 *rl = new_rl; in collapse_pointer_rl()
1361 int rl_has_sval(struct range_list *rl, sval_t sval) in rl_has_sval() argument
1365 FOR_EACH_PTR(rl, tmp) { in rl_has_sval()
1378 void push_rl(struct range_list_stack **rl_stack, struct range_list *rl) in push_rl() argument
1380 add_ptr_list(rl_stack, rl); in push_rl()
1385 struct range_list *rl; in pop_rl() local
1387 rl = last_ptr_list((struct ptr_list *)*rl_stack); in pop_rl()
1389 return rl; in pop_rl()
1394 struct range_list *rl; in top_rl() local
1396 rl = last_ptr_list((struct ptr_list *)rl_stack); in top_rl()
1397 return rl; in top_rl()
1402 struct range_list *rl; in filter_top_rl() local
1404 rl = pop_rl(rl_stack); in filter_top_rl()
1405 rl = rl_filter(rl, filter); in filter_top_rl()
1406 push_rl(rl_stack, rl); in filter_top_rl()
1409 struct range_list *rl_truncate_cast(struct symbol *type, struct range_list *rl) in rl_truncate_cast() argument
1415 if (!rl) in rl_truncate_cast()
1418 if (!type || type == rl_type(rl)) in rl_truncate_cast()
1419 return rl; in rl_truncate_cast()
1421 FOR_EACH_PTR(rl, tmp) { in rl_truncate_cast()
1424 if (type_bits(type) < type_bits(rl_type(rl))) { in rl_truncate_cast()
1438 int rl_fits_in_type(struct range_list *rl, struct symbol *type) in rl_fits_in_type() argument
1440 if (type_bits(rl_type(rl)) <= type_bits(type)) in rl_fits_in_type()
1442 if (sval_cmp(rl_max(rl), sval_type_max(type)) > 0) in rl_fits_in_type()
1444 if (sval_is_negative(rl_min(rl)) && in rl_fits_in_type()
1445 sval_cmp(rl_min(rl), sval_type_min(type)) < 0) in rl_fits_in_type()
1450 static int rl_type_consistent(struct range_list *rl) in rl_type_consistent() argument
1455 type = rl_type(rl); in rl_type_consistent()
1456 FOR_EACH_PTR(rl, tmp) { in rl_type_consistent()
1463 static struct range_list *cast_to_bool(struct range_list *rl) in cast_to_bool() argument
1472 FOR_EACH_PTR(rl, tmp) { in cast_to_bool()
1495 struct range_list *cast_rl(struct symbol *type, struct range_list *rl) in cast_rl() argument
1500 if (!rl) in cast_rl()
1504 return rl; in cast_rl()
1505 if (!rl_is_sane(rl)) in cast_rl()
1507 if (type == rl_type(rl) && rl_type_consistent(rl)) in cast_rl()
1508 return rl; in cast_rl()
1511 return cast_to_bool(rl); in cast_rl()
1513 FOR_EACH_PTR(rl, tmp) { in cast_rl()
1523 struct range_list *rl_filter(struct range_list *rl, struct range_list *filter) in rl_filter() argument
1528 rl = remove_range(rl, tmp->min, tmp->max); in rl_filter()
1531 return rl; in rl_filter()
1629 static struct range_list *get_neg_rl(struct range_list *rl) in get_neg_rl() argument
1635 if (!rl) in get_neg_rl()
1637 if (sval_is_positive(rl_min(rl))) in get_neg_rl()
1640 FOR_EACH_PTR(rl, tmp) { in get_neg_rl()
1655 static struct range_list *get_pos_rl(struct range_list *rl) in get_pos_rl() argument
1661 if (!rl) in get_pos_rl()
1663 if (sval_is_negative(rl_max(rl))) in get_pos_rl()
1666 FOR_EACH_PTR(rl, tmp) { in get_pos_rl()
1832 static unsigned long long rl_bits_always_set(struct range_list *rl) in rl_bits_always_set() argument
1834 return sval_fls_mask(rl_min(rl)); in rl_bits_always_set()
1837 static unsigned long long rl_bits_maybe_set(struct range_list *rl) in rl_bits_maybe_set() argument
1839 return sval_fls_mask(rl_max(rl)); in rl_bits_maybe_set()
1900 struct range_list *rl; in handle_AND_rl() local
1912 rl = alloc_rl(min, max); in handle_AND_rl()
1914 zero = rl_min(rl); in handle_AND_rl()
1916 add_range(&rl, zero, zero); in handle_AND_rl()
1918 return rl; in handle_AND_rl()