@@ -1290,7 +1290,10 @@ pub const ZcuTask = union(enum) {
1290
1290
1291
1291
pub fn doPrelinkTask (comp : * Compilation , task : PrelinkTask ) void {
1292
1292
const diags = & comp .link_diags ;
1293
- const base = comp .bin_file orelse return ;
1293
+ const base = comp .bin_file orelse {
1294
+ comp .link_prog_node .completeOne ();
1295
+ return ;
1296
+ };
1294
1297
switch (task ) {
1295
1298
.load_explicitly_provided = > {
1296
1299
const prog_node = comp .link_prog_node .start ("Parse Inputs" , comp .link_inputs .len );
@@ -1413,12 +1416,13 @@ pub fn doPrelinkTask(comp: *Compilation, task: PrelinkTask) void {
1413
1416
}
1414
1417
pub fn doZcuTask (comp : * Compilation , tid : usize , task : ZcuTask ) void {
1415
1418
const diags = & comp .link_diags ;
1419
+ const zcu = comp .zcu .? ;
1420
+ const ip = & zcu .intern_pool ;
1421
+ const pt : Zcu.PerThread = .activate (zcu , @enumFromInt (tid ));
1422
+ defer pt .deactivate ();
1416
1423
switch (task ) {
1417
1424
.link_nav = > | nav_index | {
1418
- const zcu = comp .zcu .? ;
1419
- const pt : Zcu.PerThread = .activate (zcu , @enumFromInt (tid ));
1420
- defer pt .deactivate ();
1421
- const fqn_slice = zcu .intern_pool .getNav (nav_index ).fqn .toSlice (& zcu .intern_pool );
1425
+ const fqn_slice = ip .getNav (nav_index ).fqn .toSlice (ip );
1422
1426
const nav_prog_node = comp .link_prog_node .start (fqn_slice , 0 );
1423
1427
defer nav_prog_node .end ();
1424
1428
if (zcu .llvm_object ) | llvm_object | {
@@ -1440,11 +1444,8 @@ pub fn doZcuTask(comp: *Compilation, tid: usize, task: ZcuTask) void {
1440
1444
}
1441
1445
},
1442
1446
.link_func = > | func | {
1443
- const zcu = comp .zcu .? ;
1444
1447
const nav = zcu .funcInfo (func .func ).owner_nav ;
1445
- const pt : Zcu.PerThread = .activate (zcu , @enumFromInt (tid ));
1446
- defer pt .deactivate ();
1447
- const fqn_slice = zcu .intern_pool .getNav (nav ).fqn .toSlice (& zcu .intern_pool );
1448
+ const fqn_slice = ip .getNav (nav ).fqn .toSlice (ip );
1448
1449
const nav_prog_node = comp .link_prog_node .start (fqn_slice , 0 );
1449
1450
defer nav_prog_node .end ();
1450
1451
switch (func .mir .status .load (.monotonic )) {
@@ -1468,9 +1469,9 @@ pub fn doZcuTask(comp: *Compilation, tid: usize, task: ZcuTask) void {
1468
1469
}
1469
1470
},
1470
1471
.link_type = > | ty | {
1471
- const zcu = comp . zcu .? ;
1472
- const pt : Zcu.PerThread = . activate ( zcu , @enumFromInt ( tid ) );
1473
- defer pt . deactivate ();
1472
+ const name = Type . fromInterned ( ty ). containerTypeName ( ip ). toSlice ( ip ) ;
1473
+ const nav_prog_node = comp . link_prog_node . start ( name , 0 );
1474
+ defer nav_prog_node . end ();
1474
1475
if (zcu .llvm_object == null ) {
1475
1476
if (comp .bin_file ) | lf | {
1476
1477
lf .updateContainerType (pt , ty ) catch | err | switch (err ) {
@@ -1481,8 +1482,8 @@ pub fn doZcuTask(comp: *Compilation, tid: usize, task: ZcuTask) void {
1481
1482
}
1482
1483
},
1483
1484
.update_line_number = > | ti | {
1484
- const pt : Zcu.PerThread = . activate ( comp .zcu .? , @enumFromInt ( tid ) );
1485
- defer pt . deactivate ();
1485
+ const nav_prog_node = comp .link_prog_node . start ( "Update line number" , 0 );
1486
+ defer nav_prog_node . end ();
1486
1487
if (pt .zcu .llvm_object == null ) {
1487
1488
if (comp .bin_file ) | lf | {
1488
1489
lf .updateLineNumber (pt , ti ) catch | err | switch (err ) {
0 commit comments