diff options
author | David Malcolm <dmalcolm@redhat.com> | 2025-01-22 08:35:41 -0500 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2025-01-22 08:35:41 -0500 |
commit | 27470f9a818538fadb0e458a272358c7141fcd8c (patch) | |
tree | 2891d66b715bdd2a7c119951ab94b0425a4a61d5 | |
parent | 9ece1c247b4d8dbb997a3dc16daa613401c6a84a (diff) | |
download | gcc-27470f9a818538fadb0e458a272358c7141fcd8c.zip gcc-27470f9a818538fadb0e458a272358c7141fcd8c.tar.gz gcc-27470f9a818538fadb0e458a272358c7141fcd8c.tar.bz2 |
jit: fix startup on aarch64
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.
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>
-rw-r--r-- | gcc/jit/dummy-frontend.cc | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/gcc/jit/dummy-frontend.cc b/gcc/jit/dummy-frontend.cc index 5748516..1d0080d 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 |