diff options
author | Jeff Law <law@gcc.gnu.org> | 1993-08-18 00:50:55 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1993-08-18 00:50:55 -0600 |
commit | 1bc695cdac5a11970398b5f977e0ce196ce1e0d0 (patch) | |
tree | 1923581a315ac5ff95ae34fa3026c41ac2cd1ead /gcc | |
parent | 44552b6a5b3f09a2670af1bd3af75ad396b31c6d (diff) | |
download | gcc-1bc695cdac5a11970398b5f977e0ce196ce1e0d0.zip gcc-1bc695cdac5a11970398b5f977e0ce196ce1e0d0.tar.gz gcc-1bc695cdac5a11970398b5f977e0ce196ce1e0d0.tar.bz2 |
pa.c (emit_move_sequence): Check both reload_in_progress and reload_completed when...
* pa.c (emit_move_sequence): Check both reload_in_progress and
reload_completed when choosing a scratch/temporary register.
From-SVN: r5180
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/pa/pa.c | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index 691253c..4ab34a5 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -842,7 +842,7 @@ emit_move_sequence (operands, mode, scratch_reg) emit_insn (gen_rtx (SET, VOIDmode, operand0, operand1)); return 1; } - if (! reload_in_progress) + if (! (reload_in_progress || reload_completed)) { operands[0] = validize_mem (operand0); operands[1] = operand1 = force_reg (mode, operand1); @@ -865,7 +865,13 @@ emit_move_sequence (operands, mode, scratch_reg) { if (flag_pic) { - rtx temp = reload_in_progress ? operand0 : gen_reg_rtx (Pmode); + rtx temp; + + if (reload_in_progress || reload_completed) + temp = operand0; + else + temp = gen_reg_rtx (Pmode); + operands[1] = legitimize_pic_address (operand1, mode, temp); emit_insn (gen_rtx (SET, VOIDmode, operand0, operands[1])); } @@ -876,7 +882,7 @@ emit_move_sequence (operands, mode, scratch_reg) { rtx temp, set; - if (reload_in_progress) + if (reload_in_progress || reload_completed) temp = scratch_reg ? scratch_reg : operand0; else temp = gen_reg_rtx (mode); @@ -893,8 +899,13 @@ emit_move_sequence (operands, mode, scratch_reg) gen_rtx (HIGH, mode, operand1))); if (function_label_operand (operand1, mode)) { - rtx temp = reload_in_progress ? scratch_reg - : gen_reg_rtx (mode); + rtx temp; + + if (reload_in_progress || reload_completed) + temp = scratch_reg; + else + temp = gen_reg_rtx (mode); + if (!temp) abort (); emit_insn (gen_rtx (PARALLEL, VOIDmode, @@ -912,7 +923,13 @@ emit_move_sequence (operands, mode, scratch_reg) else if (GET_CODE (operand1) != CONST_INT || ! cint_ok_for_move (INTVAL (operand1))) { - rtx temp = reload_in_progress ? operand0 : gen_reg_rtx (mode); + rtx temp; + + if (reload_in_progress || reload_completed) + temp = operand0; + else + temp = gen_reg_rtx (mode); + emit_insn (gen_rtx (SET, VOIDmode, temp, gen_rtx (HIGH, mode, operand1))); operands[1] = gen_rtx (LO_SUM, mode, temp, operand1); |