authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2026-03-27 20:57:53-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2026-03-27 21:03:31-04:00
log3dc5f13989676ae0bfb9389e2b162e3945b38241
tree7532c6affcfe9cff5d7563eef6b935a22e0e2a63
parent4b85f05f060ee3365bd86e1885bbefb9e685c81b

llvm: fix `-fstrip` keeping globals only referenced by the symbol table


1 files changed, 8 insertions(+), 8 deletions(-)

src/codegen/llvm.zig+8-8
......@@ -1674,7 +1674,7 @@ pub const Object = struct {
16741674 } else {
16751675 const fqn = try self.builder.strtabString(ip.getNav(nav_index).fqn.toSlice(ip));
16761676 try global_index.rename(fqn, &self.builder);
1677 global_index.setLinkage(.internal, &self.builder);
1677 global_index.setLinkage(if (self.builder.strip) .private else .internal, &self.builder);
16781678 if (comp.config.dll_export_fns)
16791679 global_index.setDllStorageClass(.default, &self.builder);
16801680 global_index.setUnnamedAddr(.unnamed_addr, &self.builder);
......@@ -2694,7 +2694,7 @@ pub const Object = struct {
26942694 defer attributes.deinit(&o.builder);
26952695
26962696 if (!is_extern) {
2697 function_index.setLinkage(.internal, &o.builder);
2697 function_index.setLinkage(if (o.builder.strip) .private else .internal, &o.builder);
26982698 function_index.setUnnamedAddr(.unnamed_addr, &o.builder);
26992699 } else {
27002700 if (target.cpu.arch.isWasm()) {
......@@ -2926,7 +2926,7 @@ pub const Object = struct {
29262926 gop.value_ptr.* = variable_index.ptrConst(&o.builder).global;
29272927
29282928 try variable_index.setInitializer(try o.lowerValue(pt, uav), &o.builder);
2929 variable_index.setLinkage(.internal, &o.builder);
2929 variable_index.setLinkage(if (o.builder.strip) .private else .internal, &o.builder);
29302930 variable_index.setMutability(.constant, &o.builder);
29312931 variable_index.setUnnamedAddr(.unnamed_addr, &o.builder);
29322932 variable_index.setAlignment(alignment.toLlvm(), &o.builder);
......@@ -2967,7 +2967,7 @@ pub const Object = struct {
29672967 // This is needed for declarations created by `@extern`.
29682968 switch (linkage) {
29692969 .internal => {
2970 variable_index.setLinkage(.internal, &o.builder);
2970 variable_index.setLinkage(if (o.builder.strip) .private else .internal, &o.builder);
29712971 variable_index.setUnnamedAddr(.unnamed_addr, &o.builder);
29722972 },
29732973 .strong, .weak => {
......@@ -4269,7 +4269,7 @@ pub const Object = struct {
42694269 defer attributes.deinit(&o.builder);
42704270 try o.addCommonFnAttributes(&attributes, zcu.root_mod, zcu.root_mod.omit_frame_pointer);
42714271
4272 function_index.setLinkage(.internal, &o.builder);
4272 function_index.setLinkage(if (o.builder.strip) .private else .internal, &o.builder);
42734273 function_index.setCallConv(.fastcc, &o.builder);
42744274 function_index.setAttributes(try attributes.finish(&o.builder), &o.builder);
42754275 return function_index;
......@@ -4297,7 +4297,7 @@ pub const Object = struct {
42974297 defer attributes.deinit(&o.builder);
42984298 try o.addCommonFnAttributes(&attributes, zcu.root_mod, zcu.root_mod.omit_frame_pointer);
42994299
4300 function_index.setLinkage(.internal, &o.builder);
4300 function_index.setLinkage(if (o.builder.strip) .private else .internal, &o.builder);
43014301 function_index.setCallConv(.fastcc, &o.builder);
43024302 function_index.setAttributes(try attributes.finish(&o.builder), &o.builder);
43034303 gop.value_ptr.* = function_index.ptrConst(&o.builder).global;
......@@ -4377,7 +4377,7 @@ pub const Object = struct {
43774377 defer attributes.deinit(builder);
43784378 try o.addCommonFnAttributes(&attributes, zcu.root_mod, zcu.root_mod.omit_frame_pointer);
43794379
4380 function_index.setLinkage(.internal, builder);
4380 function_index.setLinkage(if (o.builder.strip) .private else .internal, builder);
43814381 function_index.setCallConv(.fastcc, builder);
43824382 function_index.setAttributes(try attributes.finish(builder), builder);
43834383
......@@ -6351,7 +6351,7 @@ pub const FuncGen = struct {
63516351 .default,
63526352 );
63536353 try table_variable.setInitializer(table_val, &o.builder);
6354 table_variable.setLinkage(.internal, &o.builder);
6354 table_variable.setLinkage(if (o.builder.strip) .private else .internal, &o.builder);
63556355 table_variable.setUnnamedAddr(.unnamed_addr, &o.builder);
63566356
63576357 const table_includes_else = item_count != table_len;