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;

Reply via email to