Print this page
12724 update smatch to 0.6.1-rc1-il-5
*** 54,63 ****
--- 54,66 ----
estate_set_capped(tmp);
if (estate_treat_untagged(s1) && estate_treat_untagged(s2))
estate_set_treat_untagged(tmp);
+ if (estate_new(s1) || estate_new(s2))
+ estate_set_new(tmp);
+
return tmp;
}
struct data_info *get_dinfo(struct smatch_state *state)
{
*** 124,133 ****
--- 127,139 ----
return get_dinfo(state)->hard_max;
}
void estate_set_hard_max(struct smatch_state *state)
{
+ /* pointers don't have a hard max */
+ if (is_ptr_type(estate_type(state)))
+ return;
get_dinfo(state)->hard_max = 1;
}
void estate_clear_hard_max(struct smatch_state *state)
{
*** 172,181 ****
--- 178,199 ----
void estate_set_treat_untagged(struct smatch_state *state)
{
get_dinfo(state)->treat_untagged = true;
}
+ bool estate_new(struct smatch_state *state)
+ {
+ if (!estate_rl(state))
+ return false;
+ return get_dinfo(state)->set;
+ }
+
+ void estate_set_new(struct smatch_state *state)
+ {
+ get_dinfo(state)->set = true;
+ }
+
sval_t estate_min(struct smatch_state *state)
{
return rl_min(estate_rl(state));
}
*** 224,233 ****
--- 242,255 ----
return 0;
if (estate_capped(one) != estate_capped(two))
return 0;
if (estate_treat_untagged(one) != estate_treat_untagged(two))
return 0;
+ if (estate_has_hard_max(one) != estate_has_hard_max(two))
+ return 0;
+ if (estate_new(one) != estate_new(two))
+ return 0;
if (strcmp(one->name, two->name) == 0)
return 1;
return 0;
}