[pushed: r15-7126] jit: fix startup on aarch64
Antoni Boucher
bouanto@zoho.com
Thu Jan 23 19:01:59 GMT 2025
Le 2025-01-23 à 13 h 13, David Malcolm a écrit :
> On Wed, 2025-01-22 at 08:47 -0500, Antoni Boucher wrote:
>> Hi David.
>
> Hi Antoni
>
> I went ahead and pushed this patch since without it even simple unit
> tests like test-factorial.c were failing for me on aarch64; in
> particular, the build of emacs was failing in Fedora's mass rebuild
> with gcc 15, and the patch seems to be a minimal way to fix this.
>
>> I had a patch for this here:
>> https://github.com/antoyo/libgccjit/pull/20
>
> Sorry for this getting stuck. I see you marked that as "waiting for
> review", but it looks like the patch there hasn't changed since my last
> review within the github web UI; was that to signify that you were
> hoping for an answer to the questions you asked on how to better
> implement the fix?
Yes, perhaps I should have added the label "waiting for info", sorry.
Btw, could you please answer to this message to give your thoughts on
your workflow and usage of labels:
https://sourceware.org/pipermail/forge/2024q4/000078.html
>
>>
>> The fact that you removed the debug_tree (and abort) will make it
>> harder
>> to figure out what the missing types to handle are.
>> This will also probably make it hard for people to understand why
>> they
>> get a type error when calling a builtin function with an unsupported
>> type.
>> And as you can see in my PR, at least a few types were missing that
>> you
>> didn't add in your patch.
>>
>> Do you have a better solution for this?
>>
>> I just thought about this potential solution: perhaps if we get an
>> unsupported type, we could add the builtin to an array instead of the
>> hashmap: this way, we could tell the user that this builtin is not
>> currently supported.
>> What are your thoughts on this?
>
> I'll take another look at PR 117886 now and see if I can implement
> something.
Thanks!
>
> Dave
>
>
>>
>> Thanks.
>>
>> Le 2025-01-22 à 08 h 38, David Malcolm a écrit :
>>> libgccjit fails on startup on aarch64 (and probably other archs).
>>>
>>> The issues are that
>>>
>>> (a) within jit_langhook_init the call to
>>> targetm.init_builtins can use types that aren't representable
>>> via jit::recording::type, and
>>>
>>> (b) targetm.init_builtins can call lang_hooks.decls.pushdecl, which
>>> although a no-op for libgccjit has a gcc_unreachable.
>>>
>>> Fixed thusly.
>>>
>>> Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu.
>>> Pushed to trunk as r15-7126-g27470f9a818538.
>>>
>>> gcc/jit/ChangeLog:
>>> * dummy-frontend.cc (tree_type_to_jit_type): For
>>> POINTER_TYPE,
>>> bail out if the inner call to tree_type_to_jit_type fails.
>>> Don't abort on unknown types.
>>> (jit_langhook_pushdecl): Replace gcc_unreachable with
>>> return of
>>> NULL_TREE.
>>>
>>> Signed-off-by: David Malcolm <dmalcolm@redhat.com>
>>> ---
>>> gcc/jit/dummy-frontend.cc | 8 +++-----
>>> 1 file changed, 3 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/gcc/jit/dummy-frontend.cc b/gcc/jit/dummy-frontend.cc
>>> index 574851696311..1d0080d6fecb 100644
>>> --- a/gcc/jit/dummy-frontend.cc
>>> +++ b/gcc/jit/dummy-frontend.cc
>>> @@ -1278,6 +1278,8 @@ recording::type* tree_type_to_jit_type (tree
>>> type)
>>> {
>>> tree inner_type = TREE_TYPE (type);
>>> recording::type* element_type = tree_type_to_jit_type
>>> (inner_type);
>>> + if (!element_type)
>>> + return nullptr;
>>> return element_type->get_pointer ();
>>> }
>>> else
>>> @@ -1299,10 +1301,6 @@ recording::type* tree_type_to_jit_type (tree
>>> type)
>>> }
>>> }
>>> }
>>> -
>>> - fprintf (stderr, "Unknown type:\n");
>>> - debug_tree (type);
>>> - abort ();
>>> }
>>>
>>> return NULL;
>>> @@ -1372,7 +1370,7 @@ jit_langhook_global_bindings_p (void)
>>> static tree
>>> jit_langhook_pushdecl (tree decl ATTRIBUTE_UNUSED)
>>> {
>>> - gcc_unreachable ();
>>> + return NULL_TREE;
>>> }
>>>
>>> static tree
>>
>
More information about the Jit
mailing list