| ... | @@ -12083,15 +12083,12 @@ fn resolveSwitchPayloadCaptureTaggedUnion( | ... | @@ -12083,15 +12083,12 @@ fn resolveSwitchPayloadCaptureTaggedUnion( |
| 12083 | const field_ty: Type = .fromInterned(union_obj.field_types.get(ip)[field_index]); | 12083 | const field_ty: Type = .fromInterned(union_obj.field_types.get(ip)[field_index]); |
| 12084 | const payload_ref: Air.Inst.Ref = payload_ref: { | 12084 | const payload_ref: Air.Inst.Ref = payload_ref: { |
| 12085 | if (capture_by_ref) { | 12085 | if (capture_by_ref) { |
| 12086 | const operand_ptr_info = sema.typeOf(loaded_operand).ptrInfo(zcu); | 12086 | const ptr_field_ty = try sema.typeOf(loaded_operand).fieldPtrType(field_index, pt); |
| 12087 | const ptr_field_ty = try pt.ptrType(.{ | 12087 | if (try sema.resolveDefinedValue(case_block, operand_src, loaded_operand)) |op_ptr_val| { |
| 12088 | .child = field_ty.toIntern(), | 12088 | if (op_ptr_val.isUndef(zcu)) break :payload_ref try pt.undefRef(ptr_field_ty); |
| 12089 | .flags = .{ | 12089 | const field_ptr_val = try op_ptr_val.ptrField(field_index, pt); |
| 12090 | .is_const = operand_ptr_info.flags.is_const, | 12090 | break :payload_ref .fromValue(try pt.getCoerced(field_ptr_val, ptr_field_ty)); |
| 12091 | .is_volatile = operand_ptr_info.flags.is_volatile, | 12091 | } |
| 12092 | .address_space = operand_ptr_info.flags.address_space, | | |
| 12093 | }, | | |
| 12094 | }); | | |
| 12095 | break :payload_ref try case_block.addStructFieldPtr(loaded_operand, field_index, ptr_field_ty); | 12092 | break :payload_ref try case_block.addStructFieldPtr(loaded_operand, field_index, ptr_field_ty); |
| 12096 | } | 12093 | } |
| 12097 | if (try sema.resolveDefinedValue(case_block, operand_src, loaded_operand)) |union_val| { | 12094 | if (try sema.resolveDefinedValue(case_block, operand_src, loaded_operand)) |union_val| { |