aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-09-30 12:34:20 +0930
committerAlan Modra <amodra@gmail.com>2020-09-30 12:36:52 +0930
commitac001f5ce604f40f0a0099909325837b8792294b (patch)
tree835d29f420d1da4218a26d248967869960460515
parent93bca37c0a6dec354592676233e40e66741fdbe4 (diff)
downloadgcc-ac001f5ce604f40f0a0099909325837b8792294b.zip
gcc-ac001f5ce604f40f0a0099909325837b8792294b.tar.gz
gcc-ac001f5ce604f40f0a0099909325837b8792294b.tar.bz2
Re: rs6000: Use parameterized names for tablejump
* config/rs6000/rs6000.md (@tablejump<mode>_normal): Don't use non-existent operands[]. (@tablejump<mode>_nospec): Likewise.
-rw-r--r--gcc/config/rs6000/rs6000.md30
1 files changed, 16 insertions, 14 deletions
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 24ad809..779bfd1 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -12716,21 +12716,22 @@
(use (match_operand:P 1))]
"rs6000_speculate_indirect_jumps"
{
+ rtx off;
operands[0] = force_reg (SImode, operands[0]);
if (<MODE>mode == SImode)
- operands[4] = operands[0];
+ off = operands[0];
else
{
- operands[4] = gen_reg_rtx (Pmode);
+ off = gen_reg_rtx (Pmode);
rtx src = gen_rtx_fmt_e (SIGN_EXTEND, Pmode, operands[0]);
- emit_move_insn (operands[4], src);
+ emit_move_insn (off, src);
}
- operands[2] = force_reg (Pmode, gen_rtx_LABEL_REF (Pmode, operands[1]));
- operands[3] = gen_reg_rtx (Pmode);
+ rtx lab = force_reg (Pmode, gen_rtx_LABEL_REF (Pmode, operands[1]));
+ rtx addr = gen_reg_rtx (Pmode);
- emit_insn (gen_add<mode>3 (operands[3], operands[4], operands[2]));
- emit_jump_insn (gen_tablejump_insn_normal (Pmode, operands[3], operands[1]));
+ emit_insn (gen_add<mode>3 (addr, off, lab));
+ emit_jump_insn (gen_tablejump_insn_normal (Pmode, addr, operands[1]));
DONE;
})
@@ -12740,21 +12741,22 @@
(use (match_operand:CC 2))]
"!rs6000_speculate_indirect_jumps"
{
+ rtx off;
operands[0] = force_reg (SImode, operands[0]);
if (<MODE>mode == SImode)
- operands[4] = operands[0];
+ off = operands[0];
else
{
- operands[4] = gen_reg_rtx (Pmode);
+ off = gen_reg_rtx (Pmode);
rtx src = gen_rtx_fmt_e (SIGN_EXTEND, Pmode, operands[0]);
- emit_move_insn (operands[4], src);
+ emit_move_insn (off, src);
}
- operands[5] = force_reg (Pmode, gen_rtx_LABEL_REF (Pmode, operands[1]));
- operands[3] = gen_reg_rtx (Pmode);
+ rtx lab = force_reg (Pmode, gen_rtx_LABEL_REF (Pmode, operands[1]));
+ rtx addr = gen_reg_rtx (Pmode);
- emit_insn (gen_add<mode>3 (operands[3], operands[4], operands[5]));
- emit_jump_insn (gen_tablejump_insn_nospec (Pmode, operands[3], operands[1],
+ emit_insn (gen_add<mode>3 (addr, off, lab));
+ emit_jump_insn (gen_tablejump_insn_nospec (Pmode, addr, operands[1],
operands[2]));
DONE;
})