On Wed, Dec 01, 2021 at 07:57:52PM +0530, Siddhesh Poyarekar wrote: > static inline bool > -object_sizes_set (struct object_size_info *osi, unsigned varno, > - unsigned HOST_WIDE_INT val) > +object_sizes_set (struct object_size_info *osi, unsigned varno, tree val, > + tree wholeval) > { > int object_size_type = osi->object_size_type; > - if ((object_size_type & OST_MINIMUM) == 0) > - { > - if (object_sizes[object_size_type][varno] < val) > - return object_sizes_set_force (osi, varno, val); > - } > - else > - { > - if (object_sizes[object_size_type][varno] > val) > - return object_sizes_set_force (osi, varno, val); > - } > - return false; > + object_size osize = object_sizes[object_size_type][varno]; > + > + tree oldval = osize.size; > + tree old_wholeval = osize.wholesize; > + > + enum tree_code code = object_size_type & OST_MINIMUM ? MIN_EXPR : MAX_EXPR; > + > + val = size_binop (code, val, oldval); > + wholeval = size_binop (code, wholeval, old_wholeval); > + > + object_sizes[object_size_type][varno].size = val; > + object_sizes[object_size_type][varno].wholesize = wholeval; > + return tree_int_cst_compare (oldval, val) != 0;
Shouldn't this also tree_int_cst_compare (old_wholeval, wholeval) ? Otherwise LGTM. Jakub