https://gcc.gnu.org/g:27470f9a818538fadb0e458a272358c7141fcd8c

commit r15-7126-g27470f9a818538fadb0e458a272358c7141fcd8c
Author: David Malcolm <dmalc...@redhat.com>
Date:   Wed Jan 22 08:35:41 2025 -0500

    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 <dmalc...@redhat.com>

Diff:
---
 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

Reply via email to