| ... | @@ -1240,11 +1240,11 @@ fn semaCau(pt: Zcu.PerThread, cau_index: InternPool.Cau.Index) !SemaCauResult { | ... | @@ -1240,11 +1240,11 @@ fn semaCau(pt: Zcu.PerThread, cau_index: InternPool.Cau.Index) !SemaCauResult { |
| 1240 | }; | 1240 | }; |
| 1241 | } | 1241 | } |
| 1242 | | 1242 | |
| 1243 | const nav_already_populated, const queue_linker_work, const resolve_type = switch (ip.indexToKey(decl_val.toIntern())) { | 1243 | const nav_already_populated, const queue_linker_work = switch (ip.indexToKey(decl_val.toIntern())) { |
| 1244 | .func => |f| .{ f.owner_nav == nav_index, true, false }, | 1244 | .func => |f| .{ f.owner_nav == nav_index, true }, |
| 1245 | .variable => |v| .{ false, v.owner_nav == nav_index, true }, | 1245 | .variable => |v| .{ false, v.owner_nav == nav_index }, |
| 1246 | .@"extern" => .{ false, false, false }, | 1246 | .@"extern" => .{ false, false }, |
| 1247 | else => .{ false, true, true }, | 1247 | else => .{ false, true }, |
| 1248 | }; | 1248 | }; |
| 1249 | | 1249 | |
| 1250 | if (nav_already_populated) { | 1250 | if (nav_already_populated) { |
| ... | @@ -1317,16 +1317,7 @@ fn semaCau(pt: Zcu.PerThread, cau_index: InternPool.Cau.Index) !SemaCauResult { | ... | @@ -1317,16 +1317,7 @@ fn semaCau(pt: Zcu.PerThread, cau_index: InternPool.Cau.Index) !SemaCauResult { |
| 1317 | queue_codegen: { | 1317 | queue_codegen: { |
| 1318 | if (!queue_linker_work) break :queue_codegen; | 1318 | if (!queue_linker_work) break :queue_codegen; |
| 1319 | | 1319 | |
| 1320 | if (resolve_type) { | 1320 | if (!try decl_ty.hasRuntimeBitsSema(pt)) { |
| 1321 | // Needed for codegen_nav which will call updateDecl and then the | | |
| 1322 | // codegen backend wants full access to the Decl Type. | | |
| 1323 | // We also need this for the `isFnOrHasRuntimeBits` check below. | | |
| 1324 | // TODO: we could make the language more lenient by deferring this work | | |
| 1325 | // to the `codegen_nav` job. | | |
| 1326 | try decl_ty.resolveFully(pt); | | |
| 1327 | } | | |
| 1328 | | | |
| 1329 | if (!resolve_type or !decl_ty.hasRuntimeBits(zcu)) { | | |
| 1330 | if (zcu.comp.config.use_llvm) break :queue_codegen; | 1321 | if (zcu.comp.config.use_llvm) break :queue_codegen; |
| 1331 | if (file.mod.strip) break :queue_codegen; | 1322 | if (file.mod.strip) break :queue_codegen; |
| 1332 | } | 1323 | } |