Matthew Malcomson <matthew.malcom...@arm.com> writes: > @@ -7877,6 +7903,26 @@ gimple_build_vector (gimple_seq *seq, location_t loc, > return builder->build (); > } > > +/* Emit gimple statements into &stmts that take a value given in `old_size` > + and generate a value guaranteed to be rounded upwards to `align`. > + > + Return the tree node representing this size, it is of TREE_TYPE `type`. > */
Nit, but: the usual way of referring to parameter names is to use caps (OLD_SIZE, ALIGN, TYPE) rather than backticks. I don't think it's necessary to change the hwasan-specific code to follow that style, since what you have is self-consistent and readable as-is (although changing it would be fine too if you prefer). But since the surrounding code consistently follows the caps style, I think it would be better to use it here too. OK with that change, thanks. > + > +tree > +gimple_build_round_up (gimple_seq *seq, location_t loc, tree type, > + tree old_size, unsigned HOST_WIDE_INT align) > +{ > + unsigned HOST_WIDE_INT tg_mask = align - 1; > + /* tree new_size = (old_size + tg_mask) & ~tg_mask; */ > + gcc_assert (INTEGRAL_TYPE_P (type)); > + tree tree_mask = build_int_cst (type, tg_mask); > + tree oversize = gimple_build (seq, loc, PLUS_EXPR, type, old_size, > + tree_mask); > + > + tree mask = build_int_cst (type, -align); > + return gimple_build (seq, loc, BIT_AND_EXPR, type, oversize, mask); > +} > + > /* Return true if the result of assignment STMT is known to be non-negative. > If the return value is based on the assumption that signed overflow is > undefined, set *STRICT_OVERFLOW_P to true; otherwise, don't change Richard