On Thu, Nov 30, 2017 at 05:27:47PM +0000, Wilco Dijkstra wrote: > Fix address printing for ILP32. The md file uses 'a' in assembler > templates for symbolic addresses in adrp/add, which end up calling > aarch64_print_operand_address. However in ILP32 these are not valid > memory addresses (being ptr_mode rather than Pmode), so the assert > triggers. Since it is incorrect to use symbols in memory addresses > (besides literal pool accesses), change the 'a' to 'c' in the md file. > > Skip one failing test in ILP32 which combines the 'p' modifier with the 'a' > assembler template to fake a memory reference. > > This fixes the ICE in > https://gcc.gnu.org/ml/gcc-patches/2017-11/msg02509.html.
OK. Thanks, James > ChangeLog: > 2017-11-30 Wilco Dijkstra <wdijk...@arm.com> > > gcc/ > * config/aarch64/aarch64.md (call_insn): Use %c rather than %a. > (call_value_insn): Likewise. > (sibcall_insn): Likewise. > (sibcall_value_insn): Likewise. > (movsi_aarch64): Likewise. > (movdi_aarch64): Likewise. > (add_losym_): Likewise. > (ldr_got_small_): Likewise. > (ldr_got_small_sidi): Likewise. > (ldr_got_small_28k_): Likewise. > (ldr_got_small_28k_sidi): Likewise. > * config/aarch64/aarch64.c (aarch64_print_address_internal): > Move output_addr_const to symbolic case. Add error check. > testsuite/ > * gcc.dg/asm-4.c: Skip on AArch64 with ILP32 as test is incorrect. >