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

Reply via email to