diff --git a/src/comp.c b/src/comp.c index b24fcb5bf5a99..ce3ad22b30576 100644 --- a/src/comp.c +++ b/src/comp.c @@ -1946,6 +1946,11 @@ emit_setjmp (gcc_jit_rvalue *buf) return gcc_jit_context_new_call (comp.ctxt, NULL, f, 1, args); #else /* _setjmp (buf, __builtin_frame_address (0)) */ + gcc_jit_param *params[] = + { + gcc_jit_context_new_param (comp.ctxt, NULL, comp.void_ptr_type, "buf"), + gcc_jit_context_new_param (comp.ctxt, NULL, comp.unsigned_type, "ret"), + }; gcc_jit_rvalue *args[2]; args[0] = @@ -1959,8 +1964,14 @@ emit_setjmp (gcc_jit_rvalue *buf) "__builtin_frame_address"), 1, args); args[0] = buf; - return emit_call (intern_c_string (STR (SETJMP_NAME)), comp.int_type, 2, args, - false); + gcc_jit_function *f = + gcc_jit_context_new_function (comp.ctxt, NULL, + GCC_JIT_FUNCTION_IMPORTED, + comp.int_type, STR (SETJMP_NAME), + ARRAYELTS (params), params, + false); + + return gcc_jit_context_new_call (comp.ctxt, NULL, f, 2, args); #endif }