mirror of
https://github.com/ziglang/zig.git
synced 2026-02-13 04:48:20 +00:00
incremental: codegen types which are recreated
Unfortunately, I can't easily add a test for this, because the repro depends on some details of DWARF layout; but I've confirmed that it fixes a bug repro on another branch.
This commit is contained in:
parent
1a1389c513
commit
62e251dcaa
@ -3810,6 +3810,13 @@ fn recreateStructType(
|
||||
// No need to re-scan the namespace -- `zirStructDecl` will ultimately do that if the type is still alive.
|
||||
try zcu.comp.queueJob(.{ .resolve_type_fully = wip_ty.index });
|
||||
|
||||
codegen_type: {
|
||||
if (zcu.comp.config.use_llvm) break :codegen_type;
|
||||
if (file.mod.strip) break :codegen_type;
|
||||
// This job depends on any resolve_type_fully jobs queued up before it.
|
||||
try zcu.comp.queueJob(.{ .codegen_type = wip_ty.index });
|
||||
}
|
||||
|
||||
const new_ty = wip_ty.finish(ip, struct_obj.namespace);
|
||||
if (inst_info.inst == .main_struct_inst) {
|
||||
// This is the root type of a file! Update the reference.
|
||||
@ -3898,6 +3905,14 @@ fn recreateUnionType(
|
||||
zcu.namespacePtr(namespace_index).owner_type = wip_ty.index;
|
||||
// No need to re-scan the namespace -- `zirUnionDecl` will ultimately do that if the type is still alive.
|
||||
try zcu.comp.queueJob(.{ .resolve_type_fully = wip_ty.index });
|
||||
|
||||
codegen_type: {
|
||||
if (zcu.comp.config.use_llvm) break :codegen_type;
|
||||
if (file.mod.strip) break :codegen_type;
|
||||
// This job depends on any resolve_type_fully jobs queued up before it.
|
||||
try zcu.comp.queueJob(.{ .codegen_type = wip_ty.index });
|
||||
}
|
||||
|
||||
return wip_ty.finish(ip, namespace_index);
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user