diff options
author | Richard Sandiford <richard.sandiford@linaro.org> | 2017-09-21 11:14:01 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2017-09-21 11:14:01 +0000 |
commit | a708f4b67038ff12800a3874722374a66624e2a0 (patch) | |
tree | edc5c36cb2a56966dddefc63972cfbd2eefa465c /gcc/expr.c | |
parent | 6b1237e30840dac66ae8d16507581c948c76c52c (diff) | |
download | gcc-a708f4b67038ff12800a3874722374a66624e2a0.zip gcc-a708f4b67038ff12800a3874722374a66624e2a0.tar.gz gcc-a708f4b67038ff12800a3874722374a66624e2a0.tar.bz2 |
Make more use of simplify_gen_binary
This patch replaces various places that previously used:
if (GET_CODE (y) == CONST_INT)
... plus_constant (..., x, [-]INTVAL (y)) ...
else
... gen_rtx_PLUS/MINUS (..., x, y) ...
with single calls to simplify_gen_binary. This allows
them to handle polynomial integers as well as constants.
2017-09-21 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* calls.c (compute_argument_addresses): Use simplify_gen_binary
rather than choosing between plus_constant and gen_rtx_<CODE>.
* expr.c (emit_push_insn): Likewise.
(expand_expr_real_2): Likewise.
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r253059
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 20 |
1 files changed, 3 insertions, 17 deletions
@@ -4541,15 +4541,8 @@ emit_push_insn (rtx x, machine_mode mode, tree type, rtx size, else #endif { - if (CONST_INT_P (args_so_far)) - addr - = memory_address (mode, - plus_constant (Pmode, args_addr, - INTVAL (args_so_far))); - else - addr = memory_address (mode, gen_rtx_PLUS (Pmode, args_addr, - args_so_far)); - dest = gen_rtx_MEM (mode, addr); + addr = simplify_gen_binary (PLUS, Pmode, args_addr, args_so_far); + dest = gen_rtx_MEM (mode, memory_address (mode, addr)); /* We do *not* set_mem_attributes here, because incoming arguments may overlap with sibling call outgoing arguments and we cannot @@ -8565,14 +8558,7 @@ expand_expr_real_2 (sepops ops, rtx target, machine_mode tmode, { expand_operands (treeop0, treeop1, NULL_RTX, &op0, &op1, modifier); - - /* If the last operand is a CONST_INT, use plus_constant of - the negated constant. Else make the MINUS. */ - if (CONST_INT_P (op1)) - return REDUCE_BIT_FIELD (plus_constant (mode, op0, - -INTVAL (op1))); - else - return REDUCE_BIT_FIELD (gen_rtx_MINUS (mode, op0, op1)); + return simplify_gen_binary (MINUS, mode, op0, op1); } /* No sense saving up arithmetic to be done |