[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