https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107845

            Bug ID: 107845
           Summary: __builtin_init_trampoline ICEs on invalid arguments
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gabravier at gmail dot com
  Target Milestone: ---

void f()
{
    __builtin_init_trampoline(0, 0, 0);
}

This crashes GCC with the following error:

during RTL pass: expand
<source>: In function 'f':
<source>:3:5: internal compiler error: in expand_builtin_init_trampoline, at
builtins.cc:5683
    3 |     __builtin_init_trampoline(0, 0, 0);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0x2008dee internal_error(char const*, ...)
        ???:0
0x95c468 fancy_abort(char const*, int, char const*)
        ???:0
0xac9c55 expand_builtin(tree_node*, rtx_def*, rtx_def*, machine_mode, int)
        ???:0
0xc1031c expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        ???:0
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
Compiler returned: 1

It looks like `expand_builtin_init_trampoline` just uses `gcc_assert` to check
its arguments instead of the proper error handling other builtins do

Reply via email to