store_bit_field already takes a poly_uint64 size, so we can relax the INTVAL to rtx_to_poly_int64. This is tested by the SVE ACLE patches.
Tested on aarch64-linux-gnu and x86_64-linux-gnu, applied as obvious. Richard 2019-10-11 Richard Sandiford <richard.sandif...@arm.com> gcc/ * expr.c (store_expr): Use rtx_to_poly_int64 rather than INTVAL when calling store_bit_field. Index: gcc/expr.c =================================================================== --- gcc/expr.c 2019-10-06 16:37:30.845042970 +0100 +++ gcc/expr.c 2019-10-11 15:44:02.755432660 +0100 @@ -5790,7 +5790,8 @@ store_expr (tree exp, rtx target, int ca copy_blkmode_from_reg (target, temp, TREE_TYPE (exp)); else store_bit_field (target, - INTVAL (expr_size (exp)) * BITS_PER_UNIT, + rtx_to_poly_int64 (expr_size (exp)) + * BITS_PER_UNIT, 0, 0, 0, GET_MODE (temp), temp, reverse); } else