This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[AArch64, committed] Fix label mode
- From: Richard Sandiford <richard dot sandiford at linaro dot org>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 22 Aug 2017 10:17:26 +0100
- Subject: [AArch64, committed] Fix label mode
- Authentication-results: sourceware.org; auth=none
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.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@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;