From 515092210fe9d9f55c146bdea78289273b97bc0b Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 11 Jun 2019 13:48:53 -0400 Subject: fix not checking return value of resolving result --- src/ir.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/ir.cpp') diff --git a/src/ir.cpp b/src/ir.cpp index 0b9956253e..c57153d68c 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -14946,6 +14946,8 @@ static IrInstruction *ir_analyze_instruction_resolve_result(IrAnalyze *ira, IrIn return ira->codegen->invalid_instruction; IrInstruction *result_loc = ir_resolve_result(ira, &instruction->base, instruction->result_loc, implicit_elem_type, nullptr); + if (instr_is_unreachable(result_loc) || type_is_invalid(result_loc->value.type)) + return result_loc; ir_assert(result_loc->value.type->id == ZigTypeIdPointer, &instruction->base); ZigType *actual_elem_type = result_loc->value.type->data.pointer.child_type; if (actual_elem_type->id == ZigTypeIdOptional && implicit_elem_type->id != ZigTypeIdOptional) { -- cgit v1.2.3