Message ID | 21f11c9d07b31a70a5372333865564073fb68519.1461857901.git.segher@kernel.crashing.org |
---|---|
State | New |
Headers | show |
On 04/28/2016 09:45 AM, Segher Boessenkool wrote: > 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. OK. jeff
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; })