From d8499f7abe43ec641027eb7f94b41906c9bf5cca Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Tue, 17 Dec 2019 00:31:32 +0100 Subject: Make sure the fields array is always non-null Fixes #3497 --- src/ir.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/ir.cpp') diff --git a/src/ir.cpp b/src/ir.cpp index a5dee25645..bc16cef561 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -14018,7 +14018,8 @@ static IrInstruction *ir_get_deref(IrAnalyze *ira, IrInstruction *source_instruc case OnePossibleValueInvalid: return ira->codegen->invalid_instruction; case OnePossibleValueYes: - return ir_const(ira, source_instruction, child_type); + return ir_const_move(ira, source_instruction, + get_the_one_possible_value(ira->codegen, child_type)); case OnePossibleValueNo: break; } @@ -19226,7 +19227,8 @@ skip_resolve_peer_types: case OnePossibleValueInvalid: return ira->codegen->invalid_instruction; case OnePossibleValueYes: - return ir_const(ira, &phi_instruction->base, resolved_type); + return ir_const_move(ira, &phi_instruction->base, + get_the_one_possible_value(ira->codegen, resolved_type)); case OnePossibleValueNo: break; } @@ -19862,7 +19864,8 @@ static IrInstruction *ir_analyze_struct_field_ptr(IrAnalyze *ira, IrInstruction case OnePossibleValueInvalid: return ira->codegen->invalid_instruction; case OnePossibleValueYes: { - IrInstruction *elem = ir_const(ira, source_instr, field_type); + IrInstruction *elem = ir_const_move(ira, source_instr, + get_the_one_possible_value(ira->codegen, field_type)); return ir_get_ref(ira, source_instr, elem, false, false); } case OnePossibleValueNo: @@ -21933,7 +21936,8 @@ static IrInstruction *ir_analyze_instruction_container_init_list(IrAnalyze *ira, case OnePossibleValueInvalid: return ira->codegen->invalid_instruction; case OnePossibleValueYes: - return ir_const(ira, &instruction->base, container_type); + return ir_const_move(ira, &instruction->base, + get_the_one_possible_value(ira->codegen, container_type)); case OnePossibleValueNo: break; } -- cgit v1.2.3