From 1526d89711c90a4a98dfecb6d3c64f28c3ab7da6 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 12 Jun 2019 15:02:46 -0400 Subject: fix `@bitCast` with runtime scalar and dest result loc var --- src/ir.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/ir.cpp') diff --git a/src/ir.cpp b/src/ir.cpp index d0ad7f944c..0f62c198f6 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -24232,11 +24232,13 @@ static IrInstruction *ir_analyze_instruction_end_expr(IrAnalyze *ira, IrInstruct static IrInstruction *ir_analyze_instruction_bit_cast_src(IrAnalyze *ira, IrInstructionBitCastSrc *instruction) { IrInstruction *operand = instruction->operand->child; - if (type_is_invalid(operand->value.type) || - instruction->result_loc_bit_cast->parent->gen_instruction == nullptr) - { + if (type_is_invalid(operand->value.type)) return operand; - } + + IrInstruction *result_loc = ir_resolve_result(ira, &instruction->base, + &instruction->result_loc_bit_cast->base, operand->value.type, operand); + if (result_loc != nullptr && (type_is_invalid(result_loc->value.type) || instr_is_unreachable(result_loc))) + return result_loc; return instruction->result_loc_bit_cast->parent->gen_instruction; } -- cgit v1.2.3