Hi,

We were able to make it work by calling:

```
decl_attributes (&fndecl, fn_attributes, 0);
```

We used to set the attributes directly in `fndecl` using equivalents of:

```
DECL_ATTRIBUTES (fndecl) =
    tree_cons (ident, attribute_value, DECL_ATTRIBUTES (fndecl));
```

We now store inside `fn_attributes` using:

```
fn_attributes = tree_cons (ident, attribute_value, fn_attributes);
```

Like this, the function attributes seem to be correctly set and the
optimization is triggered as expected when using the `nonnull`
attribute.

I think with this it's all good. If you see something we did wrong,
please don't hesitate to tell us.

Le jeu. 21 sept. 2023 à 16:48, Antoni Boucher <boua...@zoho.com> a écrit :
>
> Hi.
> I'm working on adding the support for the nonnull attribute in
> libgccjit.
> I found out a way to make it working, but I need more help to find a
> proper solution.
> The problem is that the nonnull attribute should be added to the
> fn_type while we added it to the fn_decl.
> If we add it to the fn_type directly, it works.
> However, it seems the other frontends do that automatically, by the way
> of c_common_attribute_table (field type_required set to true).
> Is this correct?
> If so, how does this mechanism work and how can it be enabled for a
> frontend?
> I tried calling init_attributes at the end of jit_langhook_init, but
> that doesn't work.
> Thanks for your help.

Reply via email to