authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-01-03 00:52:37-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-01-04 00:27:09-08:00
log88dd682155a38843517ca79ae84f1f0a0d3c5cf9
treee7f8e5eb6babc73720ad9f2bd7ebfa7704eb6bea
parentdd7be75f7c5a52f838eca0d3f3cd3c7b552adff1

Compilation: revert bad code transformation

I added `unreachable` in this branch based on a misunderstanding of the original control flow.

1 files changed, 30 insertions(+), 31 deletions(-)

src/Compilation.zig+30-31
......@@ -6374,41 +6374,40 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_obj_prog_node: std.Pr
63746374 },
63756375 else => std.process.abort(),
63766376 }
6377 unreachable;
6378 }
6379
6380 var child = try std.process.spawn(io, .{
6381 .argv = argv.items,
6382 .stdin = .ignore,
6383 .stdout = .ignore,
6384 .stderr = .pipe,
6385 });
6377 } else {
6378 var child = try std.process.spawn(io, .{
6379 .argv = argv.items,
6380 .stdin = .ignore,
6381 .stdout = .ignore,
6382 .stderr = .pipe,
6383 });
63866384
6387 var stderr_reader = child.stderr.?.readerStreaming(io, &.{});
6388 const stderr = try stderr_reader.interface.allocRemaining(arena, .limited(std.math.maxInt(u32)));
6385 var stderr_reader = child.stderr.?.readerStreaming(io, &.{});
6386 const stderr = try stderr_reader.interface.allocRemaining(arena, .limited(std.math.maxInt(u32)));
63896387
6390 const term = child.wait(io) catch |err|
6391 return comp.failCObj(c_object, "failed to spawn zig clang {s}: {t}", .{ argv.items[0], err });
6388 const term = child.wait(io) catch |err|
6389 return comp.failCObj(c_object, "failed to spawn zig clang {s}: {t}", .{ argv.items[0], err });
63926390
6393 switch (term) {
6394 .exited => |code| if (code != 0) if (out_diag_path) |diag_file_path| {
6395 const bundle = CObject.Diag.Bundle.parse(gpa, io, diag_file_path) catch |err| {
6396 log.err("{}: failed to parse clang diagnostics: {s}", .{ err, stderr });
6391 switch (term) {
6392 .exited => |code| if (code != 0) if (out_diag_path) |diag_file_path| {
6393 const bundle = CObject.Diag.Bundle.parse(gpa, io, diag_file_path) catch |err| {
6394 log.err("{}: failed to parse clang diagnostics: {s}", .{ err, stderr });
6395 return comp.failCObj(c_object, "clang exited with code {d}", .{code});
6396 };
6397 return comp.failCObjWithOwnedDiagBundle(c_object, bundle);
6398 } else {
6399 log.err("clang failed with stderr: {s}", .{stderr});
63976400 return comp.failCObj(c_object, "clang exited with code {d}", .{code});
6398 };
6399 return comp.failCObjWithOwnedDiagBundle(c_object, bundle);
6400 } else {
6401 log.err("clang failed with stderr: {s}", .{stderr});
6402 return comp.failCObj(c_object, "clang exited with code {d}", .{code});
6403 },
6404 .signal => |sig| {
6405 log.err("clang failed with stderr: {s}", .{stderr});
6406 return comp.failCObj(c_object, "clang terminated with signal {t}", .{sig});
6407 },
6408 else => {
6409 log.err("clang terminated with stderr: {s}", .{stderr});
6410 return comp.failCObj(c_object, "clang terminated unexpectedly", .{});
6411 },
6401 },
6402 .signal => |sig| {
6403 log.err("clang failed with stderr: {s}", .{stderr});
6404 return comp.failCObj(c_object, "clang terminated with signal {t}", .{sig});
6405 },
6406 else => {
6407 log.err("clang terminated with stderr: {s}", .{stderr});
6408 return comp.failCObj(c_object, "clang terminated unexpectedly", .{});
6409 },
6410 }
64126411 }
64136412 } else {
64146413 const exit_code = try clangMain(arena, argv.items);