| ... | @@ -7808,9 +7808,15 @@ static TypeTableEntry *ir_analyze_fn_call(IrAnalyze *ira, IrInstructionCall *cal | ... | @@ -7808,9 +7808,15 @@ static TypeTableEntry *ir_analyze_fn_call(IrAnalyze *ira, IrInstructionCall *cal |
| 7808 | | 7808 | |
| 7809 | size_t next_proto_i = 0; | 7809 | size_t next_proto_i = 0; |
| 7810 | if (first_arg_ptr) { | 7810 | if (first_arg_ptr) { |
| 7811 | IrInstruction *first_arg = ir_get_deref(ira, first_arg_ptr, first_arg_ptr); | 7811 | IrInstruction *first_arg; |
| 7812 | if (first_arg->value.type->id == TypeTableEntryIdInvalid) | 7812 | assert(first_arg_ptr->value.type->id == TypeTableEntryIdPointer); |
| 7813 | return ira->codegen->builtin_types.entry_invalid; | 7813 | if (handle_is_ptr(first_arg_ptr->value.type->data.pointer.child_type)) { |
| | 7814 | first_arg = first_arg_ptr; |
| | 7815 | } else { |
| | 7816 | first_arg = ir_get_deref(ira, first_arg_ptr, first_arg_ptr); |
| | 7817 | if (first_arg->value.type->id == TypeTableEntryIdInvalid) |
| | 7818 | return ira->codegen->builtin_types.entry_invalid; |
| | 7819 | } |
| 7814 | | 7820 | |
| 7815 | if (!ir_analyze_fn_call_inline_arg(ira, fn_proto_node, first_arg, &exec_scope, &next_proto_i)) | 7821 | if (!ir_analyze_fn_call_inline_arg(ira, fn_proto_node, first_arg, &exec_scope, &next_proto_i)) |
| 7816 | return ira->codegen->builtin_types.entry_invalid; | 7822 | return ira->codegen->builtin_types.entry_invalid; |