| ... | ... | @@ -13174,6 +13174,16 @@ static TypeTableEntry *ir_analyze_instruction_switch_target(IrAnalyze *ira, |
| 13174 | 13174 | return tag_type; |
| 13175 | 13175 | } |
| 13176 | 13176 | case TypeTableEntryIdEnum: { |
| 13177 | type_ensure_zero_bits_known(ira->codegen, target_type); |
| 13178 | if (type_is_invalid(target_type)) |
| 13179 | return ira->codegen->builtin_types.entry_invalid; |
| 13180 | if (target_type->data.enumeration.src_field_count < 2) { |
| 13181 | TypeEnumField *only_field = &target_type->data.enumeration.fields[0]; |
| 13182 | ConstExprValue *out_val = ir_build_const_from(ira, &switch_target_instruction->base); |
| 13183 | bigint_init_bigint(&out_val->data.x_enum_tag, &only_field->value); |
| 13184 | return target_type; |
| 13185 | } |
| 13186 | |
| 13177 | 13187 | if (pointee_val) { |
| 13178 | 13188 | ConstExprValue *out_val = ir_build_const_from(ira, &switch_target_instruction->base); |
| 13179 | 13189 | bigint_init_bigint(&out_val->data.x_enum_tag, &pointee_val->data.x_enum_tag); |