aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@linaro.org>2017-09-21 11:14:01 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2017-09-21 11:14:01 +0000
commita708f4b67038ff12800a3874722374a66624e2a0 (patch)
treeedc5c36cb2a56966dddefc63972cfbd2eefa465c /gcc/expr.c
parent6b1237e30840dac66ae8d16507581c948c76c52c (diff)
downloadgcc-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.c20
1 files changed, 3 insertions, 17 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index a9689a6..2f8432d 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -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