On Wed, Mar 23, 2022 at 5:33 AM Kewen.Lin <li...@linux.ibm.com> wrote:
>
> Hi,
>
> As shown in PR104967, for some overload built-in function instance,
> if it requires a date type which isn't defined on the target, its
> fntype would be initialized as NULL.  This patch is to consider
> this possibility in function find_instance to avoid ICE.
>
> Bootstrapped and regtested on powerpc64-linux-gnu P8 and
> powerpc64le-linux-gnu P9 and P10.
>
> Is it ok for trunk?

Okay.

Thanks, David

>
> BR,
> Kewen
>
>         PR target/104967
>
> gcc/ChangeLog:
>
>         * config/rs6000/rs6000-c.cc (find_instance): Skip instances with null
>         function types.
>
> ---
>  gcc/config/rs6000/rs6000-c.cc | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/gcc/config/rs6000/rs6000-c.cc b/gcc/config/rs6000/rs6000-c.cc
> index 15251efc209..b0f9fce4b54 100644
> --- a/gcc/config/rs6000/rs6000-c.cc
> +++ b/gcc/config/rs6000/rs6000-c.cc
> @@ -1678,6 +1678,10 @@ find_instance (bool *unsupported_builtin, ovlddata 
> **instance,
>
>    ovlddata *inst = *instance;
>    gcc_assert (inst != NULL);
> +  /* It is possible for an instance to require a data type that isn't
> +     defined on this target, in which case inst->fntype will be NULL.  */
> +  if (!inst->fntype)
> +    return error_mark_node;
>    tree fntype = rs6000_builtin_info[inst->bifid].fntype;
>    tree parmtype0 = TREE_VALUE (TYPE_ARG_TYPES (fntype));
>    tree parmtype1 = TREE_VALUE (TREE_CHAIN (TYPE_ARG_TYPES (fntype)));
> --
> 2.25.1

Reply via email to