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