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
This commit is contained in:
parent
55994b971b
commit
00eee3fa2a
@ -1,3 +1,9 @@
|
||||
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
|
||||
|
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user