Relax store_bit_field call in store_expr
authorRichard Sandiford <richard.sandiford@arm.com>
Fri, 11 Oct 2019 14:44:13 +0000 (14:44 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Fri, 11 Oct 2019 14:44:13 +0000 (14:44 +0000)
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.

2019-10-11  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* expr.c (store_expr): Use rtx_to_poly_int64 rather than
INTVAL when calling store_bit_field.

From-SVN: r276888

gcc/ChangeLog
gcc/expr.c

index 8118e14b5633b57d4bd26c47640bc053c7eff366..f346dd5ced71f09900ecffdb4b36dff7a4bdd3ee 100644 (file)
@@ -1,3 +1,8 @@
+2019-10-11  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * expr.c (store_expr): Use rtx_to_poly_int64 rather than
+       INTVAL when calling store_bit_field.
+
 2019-10-11  Wilco Dijkstra  <wdijkstr@arm.com>
 
        * config/arm/arm.h (HONOR_REG_ALLOC_ORDER): Set when optimizing for
index 124144d9b1e2d6ba1e2186f7fbcce19da780f4ba..b54bf1d3dc51340c0468aac1b158797625cdd851 100644 (file)
@@ -5790,7 +5790,8 @@ store_expr (tree exp, rtx target, int call_param_p,
                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