From 8b27c9052b8d191c98686e77d2fa610390c78f32 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Fri, 11 Oct 2019 14:44:13 +0000 Subject: Relax store_bit_field call in store_expr 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 gcc/ * expr.c (store_expr): Use rtx_to_poly_int64 rather than INTVAL when calling store_bit_field. From-SVN: r276888 --- gcc/expr.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'gcc/expr.c') diff --git a/gcc/expr.c b/gcc/expr.c index 124144d..b54bf1d 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -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 -- cgit v1.1 From c01d9cfe840a1b9c5e6fa68f5af4fe321263bc7f Mon Sep 17 00:00:00 2001 From: Jozef Lawrynowicz Date: Mon, 21 Oct 2019 20:44:16 +0000 Subject: expr.c (expand_expr_real_2): Don't widen constant op1 when expanding widening multiplication. 2019-10-21 Jozef Lawrynowicz * expr.c (expand_expr_real_2): Don't widen constant op1 when expanding widening multiplication. From-SVN: r277271 --- gcc/expr.c | 3 --- 1 file changed, 3 deletions(-) (limited to 'gcc/expr.c') diff --git a/gcc/expr.c b/gcc/expr.c index b54bf1d..476c686 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -8954,9 +8954,6 @@ expand_expr_real_2 (sepops ops, rtx target, machine_mode tmode, != INTEGER_CST check. Handle it. */ if (GET_MODE (op0) == VOIDmode && GET_MODE (op1) == VOIDmode) goto widen_mult_const; - if (TREE_CODE (treeop1) == INTEGER_CST) - op1 = convert_modes (mode, word_mode, op1, - TYPE_UNSIGNED (TREE_TYPE (treeop1))); temp = expand_binop (mode, other_optab, op0, op1, target, unsignedp, OPTAB_LIB_WIDEN); hipart = gen_highpart (word_mode, temp); -- cgit v1.1