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