On Thu, Jun 27, 2024 at 12:49 AM David Malcolm <dmalc...@redhat.com> wrote:
>
> On Thu, 2023-11-23 at 17:17 -0500, Antoni Boucher wrote:
> > Hi.
> > I did split the patch and sent one for the bfloat16 support and
> > another
> > one for the vector support.
> >
> > Here's the updated patch for the machine-dependent builtins.
> >
>
> Thanks for the patch; sorry about the long delay in reviewing it.
>
> CCing Jan and Uros re the i386 part of that patch; for reference the
> patch being discussed is here:
>   https://gcc.gnu.org/pipermail/gcc-patches/2023-November/638027.html
>
> > From e025f95f4790ae861e709caf23cbc0723c1a3804 Mon Sep 17 00:00:00 2001
> > From: Antoni Boucher <boua...@zoho.com>
> > Date: Mon, 23 Jan 2023 17:21:15 -0500
> > Subject: [PATCH] libgccjit: Add support for machine-dependent builtins
>
> [...snip...]
>
> > diff --git a/gcc/config/i386/i386-builtins.cc 
> > b/gcc/config/i386/i386-builtins.cc
> > index 42fc3751676..5cc1d6f4d2e 100644
> > --- a/gcc/config/i386/i386-builtins.cc
> > +++ b/gcc/config/i386/i386-builtins.cc
> > @@ -225,6 +225,22 @@ static GTY(()) tree ix86_builtins[(int) 
> > IX86_BUILTIN_MAX];
> >
> >  struct builtin_isa ix86_builtins_isa[(int) IX86_BUILTIN_MAX];
> >
> > +static void
> > +clear_builtin_types (void)
> > +{
> > +  for (int i = 0 ; i < IX86_BT_LAST_CPTR + 1 ; i++)
> > +    ix86_builtin_type_tab[i] = NULL;
> > +
> > +  for (int i = 0 ; i < IX86_BUILTIN_MAX ; i++)
> > +  {
> > +    ix86_builtins[i] = NULL;
> > +    ix86_builtins_isa[i].set_and_not_built_p = true;
> > +  }
> > +
> > +  for (int i = 0 ; i < IX86_BT_LAST_ALIAS + 1 ; i++)
> > +    ix86_builtin_func_type_tab[i] = NULL;
> > +}
> > +
> >  tree get_ix86_builtin (enum ix86_builtins c)
> >  {
> >    return ix86_builtins[c];
> > @@ -1483,6 +1499,8 @@ ix86_init_builtins (void)
> >  {
> >    tree ftype, decl;
> >
> > +  clear_builtin_types ();
> > +
> >    ix86_init_builtin_types ();
> >
> >    /* Builtins to get CPU type and features. */
>
> Please can one of the i386 maintainers check this?
> (CCing Jan and Uros: this is for the case where the compiler code runs
> multiple times in-process due to being linked into libgccjit.so.  We
> want to restore state within i386-builtins.cc to an initial state, and
> ensure that no GC-managed objects persist from previous in-memory
> compiles).

Can we rather introduce TARGET_CLEANUP_BUILTINS hook and call it from
the JIT compiler at some appropriate time? IMO, this burdens
unnecessarily non-JIT compilation.

Uros.

Reply via email to