| ... | @@ -1294,26 +1294,20 @@ pub const DeclGen = struct { | ... | @@ -1294,26 +1294,20 @@ pub const DeclGen = struct { |
| 1294 | const field_ty = ty.structFieldType(index); | 1294 | const field_ty = ty.structFieldType(index); |
| 1295 | if (!field_ty.hasRuntimeBitsIgnoreComptime()) continue; | 1295 | if (!field_ty.hasRuntimeBitsIgnoreComptime()) continue; |
| 1296 | | 1296 | |
| 1297 | //const cast_context = IntCastContext{ .value = .{ .value = field_val } }; | 1297 | const cast_context = IntCastContext{ .value = .{ .value = field_val } }; |
| 1298 | if (bit_offset_val_pl.data != 0) { | 1298 | if (bit_offset_val_pl.data != 0) { |
| 1299 | try writer.writeAll("zig_shl_"); | 1299 | try writer.writeAll("zig_shl_"); |
| 1300 | try dg.renderTypeForBuiltinFnName(writer, ty); | 1300 | try dg.renderTypeForBuiltinFnName(writer, ty); |
| 1301 | try writer.writeByte('('); | 1301 | try writer.writeByte('('); |
| 1302 | | 1302 | try dg.renderIntCast(writer, ty, cast_context, field_ty, .FunctionArgument); |
| 1303 | //try dg.renderIntCast(writer, ty,_context, field_ty, .FunctionArgument); | | |
| 1304 | try dg.renderValue(writer, field_ty, field_val, .FunctionArgument); | | |
| 1305 | | | |
| 1306 | try writer.writeAll(", "); | 1303 | try writer.writeAll(", "); |
| 1307 | try dg.renderValue(writer, bit_offset_ty, bit_offset_val, .FunctionArgument); | 1304 | try dg.renderValue(writer, bit_offset_ty, bit_offset_val, .FunctionArgument); |
| 1308 | try writer.writeByte(')'); | 1305 | try writer.writeByte(')'); |
| 1309 | } else { | 1306 | } else { |
| 1310 | | 1307 | try dg.renderIntCast(writer, ty, cast_context, field_ty, .FunctionArgument); |
| 1311 | try dg.renderValue(writer, field_ty, field_val, .FunctionArgument); | | |
| 1312 | //try dg.renderIntCast(writer, ty, cast_context, field_ty, .FunctionArgument); | | |
| 1313 | | | |
| 1314 | } | 1308 | } |
| 1315 | | 1309 | |
| 1316 | if (needs_closing_paren) try writer.writeByte(')'); | 1310 | if (needs_closing_paren) try writer.writeByte(')') ; |
| 1317 | if (eff_index != eff_num_fields - 1) try writer.writeAll(", "); | 1311 | if (eff_index != eff_num_fields - 1) try writer.writeAll(", "); |
| 1318 | | 1312 | |
| 1319 | bit_offset_val_pl.data += field_ty.bitSize(target); | 1313 | bit_offset_val_pl.data += field_ty.bitSize(target); |
| ... | @@ -2213,10 +2207,12 @@ pub const DeclGen = struct { | ... | @@ -2213,10 +2207,12 @@ pub const DeclGen = struct { |
| 2213 | } else src_ty; | 2207 | } else src_ty; |
| 2214 | | 2208 | |
| 2215 | const src_bits = src_eff_ty.bitSize(target); | 2209 | const src_bits = src_eff_ty.bitSize(target); |
| 2216 | const src_int_info = src_eff_ty.intInfo(target); | 2210 | const src_int_info = if (src_eff_ty.isAbiInt()) src_eff_ty.intInfo(target) else null; |
| 2217 | if (dest_bits <= 64 and src_bits <= 64) { | 2211 | if (dest_bits <= 64 and src_bits <= 64) { |
| 2218 | const needs_cast = toCIntBits(dest_int_info.bits) != toCIntBits(src_int_info.bits) or | 2212 | const needs_cast = src_int_info == null or |
| 2219 | dest_int_info.signedness != src_int_info.signedness; | 2213 | (toCIntBits(dest_int_info.bits) != toCIntBits(src_int_info.?.bits) or |
| | 2214 | dest_int_info.signedness != src_int_info.?.signedness); |
| | 2215 | |
| 2220 | if (needs_cast) { | 2216 | if (needs_cast) { |
| 2221 | try w.writeByte('('); | 2217 | try w.writeByte('('); |
| 2222 | try dg.renderTypecast(w, dest_ty); | 2218 | try dg.renderTypecast(w, dest_ty); |