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