Commit 00eee3fa by Wilco Dijkstra Committed by Wilco Dijkstra

This patch fixes a failure in gcc.target/aarch64/reload-valid-spoff.c triggered...

This patch fixes a failure in gcc.target/aarch64/reload-valid-spoff.c 
triggered by https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01367.html.

In ILP32 all memory accesses must have Pmode as the base address, but
aarch64_expand_mov_immediate wasn't emitting a conversion in one case.
Besides fixing this add an assert that flags any MEM operands that are
not Pmode.

    gcc/
	* config/aarch64/aarch64 (aarch64_expand_mov_immediate):
	Convert memory address to Pmode.
	(aarch64_print_operand): Assert MEM operands are always Pmode.

From-SVN: r249741
parent 55994b97
2017-06-28 Wilco Dijkstra <wdijkstr@arm.com>
* config/aarch64/aarch64 (aarch64_expand_mov_immediate):
Convert memory address to Pmode.
(aarch64_print_operand): Assert MEM operands are always Pmode.
2017-06-28 Wilco Dijkstra <wdijkstr@arm.com>
PR target/79665
* config/arm/aarch-common.c (arm_no_early_alu_shift_dep):
Remove redundant if.
......
......@@ -2002,6 +2002,8 @@ aarch64_expand_mov_immediate (rtx dest, rtx imm)
gcc_assert (can_create_pseudo_p ());
base = gen_reg_rtx (ptr_mode);
aarch64_expand_mov_immediate (base, XEXP (mem, 0));
if (ptr_mode != Pmode)
base = convert_memory_address (Pmode, base);
mem = gen_rtx_MEM (ptr_mode, base);
}
......@@ -5265,6 +5267,8 @@ aarch64_print_operand (FILE *f, rtx x, int code)
case MEM:
output_address (GET_MODE (x), XEXP (x, 0));
/* Check all memory references are Pmode - even with ILP32. */
gcc_assert (GET_MODE (XEXP (x, 0)) == Pmode);
break;
case CONST:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment