| ... | @@ -10311,8 +10311,17 @@ static TypeTableEntry *ir_analyze_fn_call(IrAnalyze *ira, IrInstructionCall *cal | ... | @@ -10311,8 +10311,17 @@ static TypeTableEntry *ir_analyze_fn_call(IrAnalyze *ira, IrInstructionCall *cal |
| 10311 | { | 10311 | { |
| 10312 | FnTypeId *fn_type_id = &fn_type->data.fn.fn_type_id; | 10312 | FnTypeId *fn_type_id = &fn_type->data.fn.fn_type_id; |
| 10313 | size_t first_arg_1_or_0 = first_arg_ptr ? 1 : 0; | 10313 | size_t first_arg_1_or_0 = first_arg_ptr ? 1 : 0; |
| 10314 | size_t var_args_1_or_0 = fn_type_id->is_var_args ? 1 : 0; | 10314 | |
| | 10315 | // for extern functions, the var args argument is not counted. |
| | 10316 | // for zig functions, it is. |
| | 10317 | size_t var_args_1_or_0; |
| | 10318 | if (fn_type_id->cc == CallingConventionUnspecified) { |
| | 10319 | var_args_1_or_0 = fn_type_id->is_var_args ? 1 : 0; |
| | 10320 | } else { |
| | 10321 | var_args_1_or_0 = 0; |
| | 10322 | } |
| 10315 | size_t src_param_count = fn_type_id->param_count - var_args_1_or_0; | 10323 | size_t src_param_count = fn_type_id->param_count - var_args_1_or_0; |
| | 10324 | |
| 10316 | size_t call_param_count = call_instruction->arg_count + first_arg_1_or_0; | 10325 | size_t call_param_count = call_instruction->arg_count + first_arg_1_or_0; |
| 10317 | AstNode *source_node = call_instruction->base.source_node; | 10326 | AstNode *source_node = call_instruction->base.source_node; |
| 10318 | | 10327 | |