diff options
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r-- | gcc/reload1.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c index 359a89313f0..c887614ce5b 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -462,7 +462,7 @@ init_reload (void) gen_rtx_REG (Pmode, i)); /* This way, we make sure that reg+reg is an offsettable address. */ - tem = plus_constant (tem, 4); + tem = plus_constant (Pmode, tem, 4); if (memory_address_p (QImode, tem)) { @@ -2590,7 +2590,7 @@ eliminate_regs_1 (rtx x, enum machine_mode mem_mode, rtx insn, for (ep = reg_eliminate; ep < ®_eliminate[NUM_ELIMINABLE_REGS]; ep++) if (ep->from_rtx == x && ep->can_eliminate) - return plus_constant (ep->to_rtx, ep->previous_offset); + return plus_constant (Pmode, ep->to_rtx, ep->previous_offset); } else if (reg_renumber && reg_renumber[regno] < 0 @@ -2646,7 +2646,7 @@ eliminate_regs_1 (rtx x, enum machine_mode mem_mode, rtx insn, return ep->to_rtx; else return gen_rtx_PLUS (Pmode, ep->to_rtx, - plus_constant (XEXP (x, 1), + plus_constant (Pmode, XEXP (x, 1), ep->previous_offset)); } @@ -2723,7 +2723,8 @@ eliminate_regs_1 (rtx x, enum machine_mode mem_mode, rtx insn, ep->ref_outside_mem = 1; return - plus_constant (gen_rtx_MULT (Pmode, ep->to_rtx, XEXP (x, 1)), + plus_constant (Pmode, + gen_rtx_MULT (Pmode, ep->to_rtx, XEXP (x, 1)), ep->previous_offset * INTVAL (XEXP (x, 1))); } @@ -3297,8 +3298,8 @@ eliminate_regs_in_insn (rtx insn, int replace) if (base == ep->to_rtx) { - rtx src - = plus_constant (ep->to_rtx, offset - ep->offset); + rtx src = plus_constant (Pmode, ep->to_rtx, + offset - ep->offset); new_body = old_body; if (! replace) @@ -3412,7 +3413,8 @@ eliminate_regs_in_insn (rtx insn, int replace) had a PLUS before. */ if (offset == 0 || plus_src) { - rtx new_src = plus_constant (to_rtx, offset); + rtx new_src = plus_constant (GET_MODE (to_rtx), + to_rtx, offset); new_body = old_body; if (! replace) |