+2017-09-21 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * 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.
+
2017-09-21 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
if (POINTER_BOUNDS_P (args[i].tree_value))
continue;
- if (CONST_INT_P (offset))
- addr = plus_constant (Pmode, arg_reg, INTVAL (offset));
- else
- addr = gen_rtx_PLUS (Pmode, arg_reg, offset);
-
+ addr = simplify_gen_binary (PLUS, Pmode, arg_reg, offset);
addr = plus_constant (Pmode, addr, arg_offset);
if (args[i].partial != 0)
}
set_mem_align (args[i].stack, align);
- if (CONST_INT_P (slot_offset))
- addr = plus_constant (Pmode, arg_reg, INTVAL (slot_offset));
- else
- addr = gen_rtx_PLUS (Pmode, arg_reg, slot_offset);
-
+ addr = simplify_gen_binary (PLUS, Pmode, arg_reg, slot_offset);
addr = plus_constant (Pmode, addr, arg_offset);
if (args[i].partial != 0)
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
{
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