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.
> 

Reply via email to