https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64971
--- Comment #9 from Jeffrey A. Law <law at redhat dot com> --- Seems rather hackish to start accepting non-Pmode for the address. Though looking at the docs, I guess it's not strictly incorrect. The @code{symbol_ref} contains a mode, which is usually @code{Pmode}. Usually that is the only mode for which a symbol is directly valid. And the *call* pattern documentation waffles a bit too: Operand 0 should be a @code{mem} RTX whose address is the address of the function. Note, however, that this address can be a @code{symbol_ref} expression even if it would not be a legitimate memory address on the target machine. So I won't object to the aarch64 maintainers accepting the additional mode (Richard's approach), nor will I object to forcing the mode in the expander (Andrew's approach)