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 <dmalc...@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 -- 2.26.3