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.

Reply via email to