diff --git a/x86_64-gen.c b/x86_64-gen.c index 5a122d0..ec613eb 100644 --- a/x86_64-gen.c +++ b/x86_64-gen.c @@ -1441,7 +1441,8 @@ void gfunc_call(int nb_args) } } - oad(0xb8, nb_sse_args < 8 ? nb_sse_args : 8); /* mov nb_sse_args, %eax */ + if (vtop->type.ref->c != FUNC_NEW) /* implies FUNC_OLD or FUNC_ELLIPSIS */ + oad(0xb8, nb_sse_args < 8 ? nb_sse_args : 8); /* mov nb_sse_args, %eax */ gcall_or_jmp(0); if (args_size) gadd_sp(args_size);