From 9759608c8989c0609d79d6b600f54745588e57a8 Mon Sep 17 00:00:00 2001 From: Segher Boessenkool Date: Thu, 28 Apr 2016 18:50:41 +0200 Subject: [PATCH] nds32: Fix casesi (PR70668) 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. PR target/70668 * config/nds32/nds32.md (casesi): Don't access the operands array out of bounds. From-SVN: r235583 --- gcc/ChangeLog | 6 ++++++ gcc/config/nds32/nds32.md | 8 +++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3defcd2adf0..c3a9c5ed457 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-04-28 Segher Boessenkool + + PR target/70668 + * config/nds32/nds32.md (casesi): Don't access the operands array + out of bounds. + 2016-04-28 Uros Bizjak * config/i386/i386.md (zeroing peephole2): Use general_reg_operand. diff --git a/gcc/config/nds32/nds32.md b/gcc/config/nds32/nds32.md index 5cdd8b24aae..494a78d91e5 100644 --- a/gcc/config/nds32/nds32.md +++ b/gcc/config/nds32/nds32.md @@ -2288,11 +2288,9 @@ create_template: 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; }) -- 2.30.2