Print this page
12166 resync smatch to 0.6.1-rc1-il-3

*** 132,141 **** --- 132,144 ---- static int truncates_nicely(struct symbol *type, sval_t min, sval_t max) { unsigned long long mask; int bits = type_bits(type); + if (type_is_fp(min.type) && !type_is_fp(type)) + return 0; + if (bits >= type_bits(min.type)) return 0; mask = -1ULL << bits; return (min.uvalue & mask) == (max.uvalue & mask);
*** 430,439 **** --- 433,449 ---- static sval_t parse_val(int use_max, struct expression *call, struct symbol *type, const char *c, const char **endp) { const char *start = c; sval_t ret; + if (type == &float_ctype) + return sval_type_fval(type, strtof(start, (char **)endp)); + else if (type == &double_ctype) + return sval_type_fval(type, strtod(start, (char **)endp)); + else if (type == &ldouble_ctype) + return sval_type_fval(type, strtold(start, (char **)endp)); + if (!strncmp(start, "max", 3)) { ret = sval_type_max(type); c += 3; } else if (!strncmp(start, "u64max", 6)) { ret = sval_type_val(type, ULLONG_MAX);
*** 562,572 **** c++; if (*c == '[' || *c == '\0') break; } if (*c != '-') { ! sm_msg("debug XXX: trouble parsing %s c = %s", str, c); break; } c++; if (*c == '(') c++; --- 572,582 ---- c++; if (*c == '[' || *c == '\0') break; } if (*c != '-') { ! sm_debug("XXX: trouble parsing %s c = %s", str, c); break; } c++; if (*c == '(') c++;