This patch fixes a case where we tried to force a VOIDmode label into a DImode register, which led to invalid rtl that was previously undiagnosed.
Tested on aarch64-linux-gnu and applied as obvious. Richard 2017-08-22 Richard Sandiford <richard.sandif...@linaro.org> Alan Hayward <alan.hayw...@arm.com> David Sherwood <david.sherw...@arm.com> gcc/ * config/aarch64/aarch64.md (casesi): Use DImode rather than VOIDmode for the LABEL_REF. Index: gcc/config/aarch64/aarch64.md =================================================================== --- gcc/config/aarch64/aarch64.md 2017-08-22 10:11:45.067177420 +0100 +++ gcc/config/aarch64/aarch64.md 2017-08-22 10:13:02.285442249 +0100 @@ -498,7 +498,7 @@ (define_expand "casesi" const0_rtx), operands[0], operands[2], operands[4])); - operands[2] = force_reg (DImode, gen_rtx_LABEL_REF (VOIDmode, operands[3])); + operands[2] = force_reg (DImode, gen_rtx_LABEL_REF (DImode, operands[3])); emit_jump_insn (gen_casesi_dispatch (operands[2], operands[0], operands[3])); DONE;