https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93119
--- Comment #3 from Richard Earnshaw <rearnsha at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #2) > Simplier patch, change PTR to P instead. Mine then. > > That is: > diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md > index f114f85..dd10ec5 100644 > --- a/gcc/config/aarch64/aarch64.md > +++ b/gcc/config/aarch64/aarch64.md > @@ -6725,7 +6725,7 @@ > [(parallel [(set (match_operand 0 "register_operand") > (call (mem:DI (match_dup 2)) (const_int 1))) > (unspec:DI [(const_int 0)] UNSPEC_CALLEE_ABI) > - (unspec:DI [(match_operand:PTR 1 "aarch64_valid_symref")] > UNSPEC_GOTSMALLTLS) > + (unspec:DI [(match_operand:P 1 "aarch64_valid_symref")] > UNSPEC_GOTSMALLTLS) > (clobber (reg:DI LR_REGNUM))])] > "" > { > @@ -6736,7 +6736,7 @@ > [(set (match_operand 0 "register_operand" "") > (call (mem:DI (match_operand:DI 2 "" "")) (const_int 1))) > (unspec:DI [(const_int 0)] UNSPEC_CALLEE_ABI) > - (unspec:DI [(match_operand:PTR 1 "aarch64_valid_symref" "S")] > UNSPEC_GOTSMALLTLS) > + (unspec:DI [(match_operand:P 1 "aarch64_valid_symref" "S")] > UNSPEC_GOTSMALLTLS) > (clobber (reg:DI LR_REGNUM)) > ] > "" I don't think that's right either. These are supposed to be machine addresses, not C pointers.