diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/rs6000/rs6000.md | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index acbf130..5e5ad9f 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -12732,14 +12732,11 @@ (use (match_operand:P 1))] "rs6000_speculate_indirect_jumps" { - rtx off; - operands[0] = force_reg (SImode, operands[0]); - if (<MODE>mode == SImode) - off = operands[0]; - else + rtx off = force_reg (SImode, operands[0]); + if (<MODE>mode != SImode) { + rtx src = gen_rtx_fmt_e (SIGN_EXTEND, Pmode, off); off = gen_reg_rtx (Pmode); - rtx src = gen_rtx_fmt_e (SIGN_EXTEND, Pmode, operands[0]); emit_move_insn (off, src); } @@ -12757,14 +12754,11 @@ (use (match_operand:CC 2))] "!rs6000_speculate_indirect_jumps" { - rtx off; - operands[0] = force_reg (SImode, operands[0]); - if (<MODE>mode == SImode) - off = operands[0]; - else + rtx off = force_reg (SImode, operands[0]); + if (<MODE>mode != SImode) { + rtx src = gen_rtx_fmt_e (SIGN_EXTEND, Pmode, off); off = gen_reg_rtx (Pmode); - rtx src = gen_rtx_fmt_e (SIGN_EXTEND, Pmode, operands[0]); emit_move_insn (off, src); } |