Lines Matching refs:type

57 	ret.type = get_type(expr);  in sval_blank()
58 if (!ret.type) in sval_blank()
59 ret.type = &int_ctype; in sval_blank()
65 sval_t sval_type_val(struct symbol *type, long long val) in sval_type_val() argument
69 if (!type) in sval_type_val()
70 type = &llong_ctype; in sval_type_val()
72 ret.type = type; in sval_type_val()
77 sval_t sval_type_fval(struct symbol *type, long double fval) in sval_type_fval() argument
81 ret.type = &ldouble_ctype; in sval_type_fval()
83 return sval_cast(type, ret); in sval_type_fval()
101 ret.type = &ldouble_ctype; in sval_from_fval()
110 if (!sval.type) in sval_is_ptr()
112 return (sval.type->type == SYM_PTR || sval.type->type == SYM_ARRAY); in sval_is_ptr()
117 return type_is_fp(sval.type); in sval_is_fp()
122 if (is_ptr_type(sval.type)) in sval_unsigned()
124 return type_unsigned(sval.type); in sval_unsigned()
129 return !type_unsigned(sval.type); in sval_signed()
134 return type_bits(sval.type); in sval_bits()
150 if (type_unsigned(sval.type)) in sval_is_negative()
164 if (sval.type == &float_ctype) in fp_is_min()
166 if (sval.type == &double_ctype) in fp_is_min()
168 if (sval.type == &ldouble_ctype) in fp_is_min()
170 sm_perror("%s: bad type: '%s'", __func__, type_to_str(sval.type)); in fp_is_min()
176 sval_t min = sval_type_min(sval.type); in sval_is_min()
192 if (sval.type == &float_ctype) in fp_is_max()
194 if (sval.type == &double_ctype) in fp_is_max()
196 if (sval.type == &ldouble_ctype) in fp_is_max()
198 sm_perror("%s: bad type: '%s'", __func__, type_to_str(sval.type)); in fp_is_max()
204 sval_t max = sval_type_max(sval.type); in sval_is_max()
267 int sval_cmp_t(struct symbol *type, sval_t one, sval_t two) in sval_cmp_t() argument
271 one_cast = sval_cast(type, one); in sval_cmp_t()
272 two_cast = sval_cast(type, two); in sval_cmp_t()
298 int sval_too_low(struct symbol *type, sval_t sval) in sval_too_low() argument
300 if (sval_is_negative(sval) && type_unsigned(type)) in sval_too_low()
302 if (type_signed(type) && sval_unsigned(sval)) in sval_too_low()
304 if (type_signed(sval.type) && in sval_too_low()
305 sval.value < sval_type_min(type).value) in sval_too_low()
307 if (sval_cmp(sval, sval_type_min(type)) < 0) in sval_too_low()
312 int sval_too_high(struct symbol *type, sval_t sval) in sval_too_high() argument
316 if (sval.uvalue > sval_type_max(type).uvalue) in sval_too_high()
321 int sval_fits(struct symbol *type, sval_t sval) in sval_fits() argument
324 if (type_is_fp(type)) in sval_fits()
327 if (type_is_fp(sval.type)) in sval_fits()
330 if (sval_too_low(type, sval)) in sval_fits()
332 if (sval_too_high(type, sval)) in sval_fits()
337 static sval_t cast_to_fp(struct symbol *type, sval_t sval) in cast_to_fp() argument
341 ret.type = type; in cast_to_fp()
342 if (type == &float_ctype) { in cast_to_fp()
348 } else if (sval.type == &float_ctype) in cast_to_fp()
350 else if (sval.type == &double_ctype) in cast_to_fp()
354 } else if (type == &double_ctype) { in cast_to_fp()
360 } else if (sval.type == &float_ctype) in cast_to_fp()
362 else if (sval.type == &double_ctype) in cast_to_fp()
366 } else if (type == &ldouble_ctype) { in cast_to_fp()
372 } else if (sval.type == &float_ctype) in cast_to_fp()
374 else if (sval.type == &double_ctype) in cast_to_fp()
379 sm_perror("%s: bad type: %s", __func__, type_to_str(type)); in cast_to_fp()
385 static sval_t cast_from_fp(struct symbol *type, sval_t sval) in cast_from_fp() argument
389 ret.type = &llong_ctype; in cast_from_fp()
390 if (sval.type == &float_ctype) in cast_from_fp()
392 else if (sval.type == &double_ctype) in cast_from_fp()
394 else if (sval.type == &ldouble_ctype) in cast_from_fp()
397 sm_perror("%s: bad type: %s", __func__, type_to_str(type)); in cast_from_fp()
399 return sval_cast(type, ret); in cast_from_fp()
402 sval_t sval_cast(struct symbol *type, sval_t sval) in sval_cast() argument
406 if (!type) in sval_cast()
407 type = &int_ctype; in sval_cast()
409 if (type_is_fp(type)) in sval_cast()
410 return cast_to_fp(type, sval); in sval_cast()
411 if (type_is_fp(sval.type)) in sval_cast()
412 return cast_from_fp(type, sval); in sval_cast()
414 ret.type = type; in sval_cast()
452 sval = sval_cast(sval.type, sval); in sval_preop()
456 sval = sval_cast(sval.type, sval); in sval_preop()
462 static sval_t sval_binop_unsigned(struct symbol *type, sval_t left, int op, sval_t right) in sval_binop_unsigned() argument
466 ret.type = type; in sval_binop_unsigned()
517 static sval_t sval_binop_signed(struct symbol *type, sval_t left, int op, sval_t right) in sval_binop_signed() argument
521 ret.type = type; in sval_binop_signed()
574 static sval_t ptr_binop(struct symbol *type, sval_t left, int op, sval_t right) in ptr_binop() argument
580 return sval_binop_unsigned(type, left, op, right); in ptr_binop()
582 ret.type = type; in ptr_binop()
583 if (type->type == SYM_PTR) in ptr_binop()
584 type = get_real_base_type(type); in ptr_binop()
585 align = type->ctype.alignment; in ptr_binop()
590 if (type_is_ptr(left.type)) in ptr_binop()
595 if (!type_is_ptr(left.type)) { in ptr_binop()
597 ret = ptr_binop(type, left, '+', right); in ptr_binop()
598 } else if (!type_is_ptr(right.type)) { in ptr_binop()
600 ret = ptr_binop(type, left, '+', right); in ptr_binop()
607 ret.type = ssize_t_ctype; in ptr_binop()
613 struct symbol *type; in sval_binop() local
616 type = get_promoted_type(left.type, right.type); in sval_binop()
618 if (type_is_ptr(type)) in sval_binop()
619 ret = ptr_binop(type, left, op, right); in sval_binop()
620 else if (type_unsigned(type)) in sval_binop()
621 ret = sval_binop_unsigned(type, left, op, right); in sval_binop()
623 ret = sval_binop_signed(type, left, op, right); in sval_binop()
624 return sval_cast(type, ret); in sval_binop()
648 struct symbol *type; in sval_binop_overflows() local
651 type = left.type; in sval_binop_overflows()
652 if (type_positive_bits(right.type) > type_positive_bits(left.type)) in sval_binop_overflows()
653 type = right.type; in sval_binop_overflows()
654 if (type_positive_bits(type) < 31) in sval_binop_overflows()
655 type = &int_ctype; in sval_binop_overflows()
657 max = sval_type_max(type); in sval_binop_overflows()
658 min = sval_type_min(type); in sval_binop_overflows()
673 if (type_signed(type)) { in sval_binop_overflows()
685 if (type_unsigned(type)) { in sval_binop_overflows()
718 struct symbol *type; in sval_binop_overflows_no_sign() local
720 type = left.type; in sval_binop_overflows_no_sign()
721 if (type_positive_bits(right.type) > type_positive_bits(left.type)) in sval_binop_overflows_no_sign()
722 type = right.type; in sval_binop_overflows_no_sign()
723 if (type_positive_bits(type) <= 31) in sval_binop_overflows_no_sign()
724 type = &uint_ctype; in sval_binop_overflows_no_sign()
726 type = &ullong_ctype; in sval_binop_overflows_no_sign()
728 left = sval_cast(type, left); in sval_binop_overflows_no_sign()
729 right = sval_cast(type, right); in sval_binop_overflows_no_sign()
776 if (sval.type == &float_ctype) in fp_to_str()
778 else if (sval.type == &double_ctype) in fp_to_str()
780 else if (sval.type == &ldouble_ctype) { in fp_to_str()
833 !is_ptr_type(sval.type)) in sval_to_str_or_err_ptr()
848 if (type_is_fp(sval.type)) in sval_to_numstr()
865 ret.type = &llong_ctype; in ll_to_sval()