Print this page
11972 resync smatch

*** 51,60 **** --- 51,63 ---- estate_set_fuzzy_max(tmp, sval_max(estate_get_fuzzy_max(s1), estate_get_fuzzy_max(s2))); if (estate_capped(s1) && estate_capped(s2)) estate_set_capped(tmp); + if (estate_treat_untagged(s1) && estate_treat_untagged(s2)) + estate_set_treat_untagged(tmp); + return tmp; } struct data_info *get_dinfo(struct smatch_state *state) {
*** 114,124 **** get_dinfo(state)->fuzzy_max = empty; } int estate_has_hard_max(struct smatch_state *state) { ! if (!state) return 0; return get_dinfo(state)->hard_max; } void estate_set_hard_max(struct smatch_state *state) --- 117,127 ---- get_dinfo(state)->fuzzy_max = empty; } int estate_has_hard_max(struct smatch_state *state) { ! if (!state || !estate_rl(state)) return 0; return get_dinfo(state)->hard_max; } void estate_set_hard_max(struct smatch_state *state)
*** 152,161 **** --- 155,181 ---- void estate_set_capped(struct smatch_state *state) { get_dinfo(state)->capped = true; } + bool estate_treat_untagged(struct smatch_state *state) + { + if (!state) + return false; + + /* impossible states are capped */ + if (!estate_rl(state)) + return true; + + return get_dinfo(state)->treat_untagged; + } + + void estate_set_treat_untagged(struct smatch_state *state) + { + get_dinfo(state)->treat_untagged = true; + } + sval_t estate_min(struct smatch_state *state) { return rl_min(estate_rl(state)); }
*** 202,211 **** --- 222,233 ---- return 1; if (!rlists_equiv(estate_related(one), estate_related(two))) return 0; if (estate_capped(one) != estate_capped(two)) return 0; + if (estate_treat_untagged(one) != estate_treat_untagged(two)) + return 0; if (strcmp(one->name, two->name) == 0) return 1; return 0; }
*** 232,241 **** --- 254,265 ---- int estate_get_single_value(struct smatch_state *state, sval_t *sval) { sval_t min, max; + if (!estate_rl(state)) + return 0; min = rl_min(estate_rl(state)); max = rl_max(estate_rl(state)); if (sval_cmp(min, max) != 0) return 0; *sval = min;