From: Michael Beck Date: Tue, 7 Apr 2009 22:32:08 +0000 (+0000) Subject: - fixed handling of variadic types/calling conventions X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=cd07a24037a7bc9939a9bff185aba6c7dcbae0c8;p=cparser - fixed handling of variadic types/calling conventions [r25819] --- diff --git a/ast2firm.c b/ast2firm.c index 8818b57..a1b2c45 100644 --- a/ast2firm.c +++ b/ast2firm.c @@ -380,10 +380,11 @@ static ir_type *create_method_type(const function_type_t *function_type, bool fo ++n; } - if (function_type->variadic || - (function_type->unspecified_parameters && !function_type->prototyped)) { + bool is_variadic = function_type->variadic || + (function_type->unspecified_parameters && !function_type->prototyped); + + if (is_variadic) set_method_variadicity(irtype, variadicity_variadic); - } unsigned cc = get_method_calling_convention(irtype); switch (function_type->calling_convention) { @@ -394,7 +395,7 @@ is_cdecl: break; case CC_STDCALL: - if (function_type->variadic || function_type->unspecified_parameters) + if (is_variadic) goto is_cdecl; /* only non-variadic function can use stdcall, else use cdecl */ @@ -402,7 +403,7 @@ is_cdecl: break; case CC_FASTCALL: - if (function_type->variadic || function_type->unspecified_parameters) + if (is_variadic) goto is_cdecl; /* only non-variadic function can use fastcall, else use cdecl */ set_method_calling_convention(irtype, SET_FASTCALL(cc));