aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/rs6000/rs6000.md18
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);
}