[PATCH] nds32: Fix casesi (PR70668)
Segher Boessenkool
segher@kernel.crashing.org
Thu Apr 28 15:46:00 GMT 2016
Expanders do not have more elements in the operands array than declared
in the pattern. So, we cannot use operands[5] here. Instead just
declare and use another rtx.
Built with a cross compiler; not tested otherwise. Is this okay for trunk?
Segher
2016-04-28 Segher Boessenkool <segher@kernel.crashing.org>
PR target/70668
* config/nds32/nds32.md (casesi): Don't access the operands array
out of bounds.
---
gcc/config/nds32/nds32.md | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/gcc/config/nds32/nds32.md b/gcc/config/nds32/nds32.md
index 5cdd8b2..494a78d 100644
--- a/gcc/config/nds32/nds32.md
+++ b/gcc/config/nds32/nds32.md
@@ -2288,11 +2288,9 @@ (define_expand "casesi"
emit_jump_insn (gen_cbranchsi4 (test, operands[0], operands[2],
operands[4]));
- operands[5] = gen_reg_rtx (SImode);
- /* Step C, D, E, and F, using another temporary register operands[5]. */
- emit_jump_insn (gen_casesi_internal (operands[0],
- operands[3],
- operands[5]));
+ /* Step C, D, E, and F, using another temporary register. */
+ rtx tmp = gen_reg_rtx (SImode);
+ emit_jump_insn (gen_casesi_internal (operands[0], operands[3], tmp));
DONE;
})
--
1.9.3
More information about the Gcc-patches
mailing list