aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2025-01-22 08:35:41 -0500
committerDavid Malcolm <dmalcolm@redhat.com>2025-01-22 08:35:41 -0500
commit27470f9a818538fadb0e458a272358c7141fcd8c (patch)
tree2891d66b715bdd2a7c119951ab94b0425a4a61d5 /gcc
parent9ece1c247b4d8dbb997a3dc16daa613401c6a84a (diff)
downloadgcc-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>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/jit/dummy-frontend.cc8
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