| ... | @@ -20884,18 +20884,19 @@ static IrInstruction *ir_analyze_instruction_check_switch_prongs(IrAnalyze *ira, | ... | @@ -20884,18 +20884,19 @@ static IrInstruction *ir_analyze_instruction_check_switch_prongs(IrAnalyze *ira, |
| 20884 | for (size_t range_i = 0; range_i < instruction->range_count; range_i += 1) { | 20884 | for (size_t range_i = 0; range_i < instruction->range_count; range_i += 1) { |
| 20885 | IrInstructionCheckSwitchProngsRange *range = &instruction->ranges[range_i]; | 20885 | IrInstructionCheckSwitchProngsRange *range = &instruction->ranges[range_i]; |
| 20886 | | 20886 | |
| 20887 | IrInstruction *start_value = range->start->child; | 20887 | IrInstruction *start_value_uncasted = range->start->child; |
| | 20888 | if (type_is_invalid(start_value_uncasted->value.type)) |
| | 20889 | return ira->codegen->invalid_instruction; |
| | 20890 | IrInstruction *start_value = ir_implicit_cast(ira, start_value_uncasted, switch_type); |
| 20888 | if (type_is_invalid(start_value->value.type)) | 20891 | if (type_is_invalid(start_value->value.type)) |
| 20889 | return ira->codegen->invalid_instruction; | 20892 | return ira->codegen->invalid_instruction; |
| 20890 | | 20893 | |
| 20891 | IrInstruction *end_value = range->end->child; | 20894 | IrInstruction *end_value_uncasted = range->end->child; |
| 20892 | if (type_is_invalid(end_value->value.type)) | 20895 | if (type_is_invalid(end_value_uncasted->value.type)) |
| 20893 | return ira->codegen->invalid_instruction; | 20896 | return ira->codegen->invalid_instruction; |
| 20894 | | 20897 | IrInstruction *end_value = ir_implicit_cast(ira, end_value_uncasted, switch_type); |
| 20895 | if (start_value->value.type->id != ZigTypeIdEnum) { | 20898 | if (type_is_invalid(end_value->value.type)) |
| 20896 | ir_add_error(ira, range->start, buf_sprintf("not an enum type")); | | |
| 20897 | return ira->codegen->invalid_instruction; | 20899 | return ira->codegen->invalid_instruction; |
| 20898 | } | | |
| 20899 | | 20900 | |
| 20900 | BigInt start_index; | 20901 | BigInt start_index; |
| 20901 | bigint_init_bigint(&start_index, &start_value->value.data.x_enum_tag); | 20902 | bigint_init_bigint(&start_index, &start_value->value.data.x_enum_tag); |