Message ID | 83ee4de4-abe5-7f50-3cb6-be86d304c507@linux.ibm.com |
---|---|
State | New |
Headers | show |
Series | rs6000: Skip overload instances with NULL fntype [PR104967] | expand |
On Wed, Mar 23, 2022 at 5:33 AM Kewen.Lin <linkw@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
On Wed, Mar 23, 2022 at 05:33:21PM +0800, Kewen.Lin via Gcc-patches wrote: > 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 nit: s/date/data/ > fntype would be initialized as NULL. This patch is to consider > this possibility in function find_instance to avoid ICE. PC
on 2022/3/23 8:29 PM, David Edelsohn wrote: > On Wed, Mar 23, 2022 at 5:33 AM Kewen.Lin <linkw@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 > Thanks David! Committed as r12-7792-g497bde3ab92b2c. >> 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 > nit: s/date/data/ > Thanks for catching Paul! Updated in pushed commit log. BR, Kewen
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)));