From b8fe8fc2105455eb5004be89fa8575aa928a18f3 Mon Sep 17 00:00:00 2001 From: Zhang Boyang Date: Mon, 21 Aug 2017 19:38:11 +0800 Subject: [PATCH] called function should pop the arguments when using fastcall --- i386-gen.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/i386-gen.c b/i386-gen.c index 3646084..f1d95cd 100644 --- a/i386-gen.c +++ b/i386-gen.c @@ -504,7 +504,7 @@ ST_FUNC void gfunc_call(int nb_args) #endif gcall_or_jmp(0); - if (args_size && func_call != FUNC_STDCALL) + if (args_size && func_call != FUNC_STDCALL && func_call != FUNC_FASTCALLW) gadd_sp(args_size); vtop--; } @@ -586,8 +586,8 @@ ST_FUNC void gfunc_prolog(CType *func_type) param_index++; } func_ret_sub = 0; - /* pascal type call ? */ - if (func_call == FUNC_STDCALL) + /* pascal type call or fastcall ? */ + if (func_call == FUNC_STDCALL || func_call == FUNC_FASTCALLW) func_ret_sub = addr - 8; #ifndef TCC_TARGET_PE else if (func_vc)