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 {...@@ -1674,7 +1674,7 @@ pub const Object = struct {
1674 } else {1674 } else {
1675 const fqn = try self.builder.strtabString(ip.getNav(nav_index).fqn.toSlice(ip));1675 const fqn = try self.builder.strtabString(ip.getNav(nav_index).fqn.toSlice(ip));
1676 try global_index.rename(fqn, &self.builder);1676 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);
1678 if (comp.config.dll_export_fns)1678 if (comp.config.dll_export_fns)
1679 global_index.setDllStorageClass(.default, &self.builder);1679 global_index.setDllStorageClass(.default, &self.builder);
1680 global_index.setUnnamedAddr(.unnamed_addr, &self.builder);1680 global_index.setUnnamedAddr(.unnamed_addr, &self.builder);
...@@ -2694,7 +2694,7 @@ pub const Object = struct {...@@ -2694,7 +2694,7 @@ pub const Object = struct {
2694 defer attributes.deinit(&o.builder);2694 defer attributes.deinit(&o.builder);
26952695
2696 if (!is_extern) {2696 if (!is_extern) {
2697 function_index.setLinkage(.internal, &o.builder);2697 function_index.setLinkage(if (o.builder.strip) .private else .internal, &o.builder);
2698 function_index.setUnnamedAddr(.unnamed_addr, &o.builder);2698 function_index.setUnnamedAddr(.unnamed_addr, &o.builder);
2699 } else {2699 } else {
2700 if (target.cpu.arch.isWasm()) {2700 if (target.cpu.arch.isWasm()) {
...@@ -2926,7 +2926,7 @@ pub const Object = struct {...@@ -2926,7 +2926,7 @@ pub const Object = struct {
2926 gop.value_ptr.* = variable_index.ptrConst(&o.builder).global;2926 gop.value_ptr.* = variable_index.ptrConst(&o.builder).global;
29272927
2928 try variable_index.setInitializer(try o.lowerValue(pt, uav), &o.builder);2928 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);
2930 variable_index.setMutability(.constant, &o.builder);2930 variable_index.setMutability(.constant, &o.builder);
2931 variable_index.setUnnamedAddr(.unnamed_addr, &o.builder);2931 variable_index.setUnnamedAddr(.unnamed_addr, &o.builder);
2932 variable_index.setAlignment(alignment.toLlvm(), &o.builder);2932 variable_index.setAlignment(alignment.toLlvm(), &o.builder);
...@@ -2967,7 +2967,7 @@ pub const Object = struct {...@@ -2967,7 +2967,7 @@ pub const Object = struct {
2967 // This is needed for declarations created by `@extern`.2967 // This is needed for declarations created by `@extern`.
2968 switch (linkage) {2968 switch (linkage) {
2969 .internal => {2969 .internal => {
2970 variable_index.setLinkage(.internal, &o.builder);2970 variable_index.setLinkage(if (o.builder.strip) .private else .internal, &o.builder);
2971 variable_index.setUnnamedAddr(.unnamed_addr, &o.builder);2971 variable_index.setUnnamedAddr(.unnamed_addr, &o.builder);
2972 },2972 },
2973 .strong, .weak => {2973 .strong, .weak => {
...@@ -4269,7 +4269,7 @@ pub const Object = struct {...@@ -4269,7 +4269,7 @@ pub const Object = struct {
4269 defer attributes.deinit(&o.builder);4269 defer attributes.deinit(&o.builder);
4270 try o.addCommonFnAttributes(&attributes, zcu.root_mod, zcu.root_mod.omit_frame_pointer);4270 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);
4273 function_index.setCallConv(.fastcc, &o.builder);4273 function_index.setCallConv(.fastcc, &o.builder);
4274 function_index.setAttributes(try attributes.finish(&o.builder), &o.builder);4274 function_index.setAttributes(try attributes.finish(&o.builder), &o.builder);
4275 return function_index;4275 return function_index;
...@@ -4297,7 +4297,7 @@ pub const Object = struct {...@@ -4297,7 +4297,7 @@ pub const Object = struct {
4297 defer attributes.deinit(&o.builder);4297 defer attributes.deinit(&o.builder);
4298 try o.addCommonFnAttributes(&attributes, zcu.root_mod, zcu.root_mod.omit_frame_pointer);4298 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);
4301 function_index.setCallConv(.fastcc, &o.builder);4301 function_index.setCallConv(.fastcc, &o.builder);
4302 function_index.setAttributes(try attributes.finish(&o.builder), &o.builder);4302 function_index.setAttributes(try attributes.finish(&o.builder), &o.builder);
4303 gop.value_ptr.* = function_index.ptrConst(&o.builder).global;4303 gop.value_ptr.* = function_index.ptrConst(&o.builder).global;
...@@ -4377,7 +4377,7 @@ pub const Object = struct {...@@ -4377,7 +4377,7 @@ pub const Object = struct {
4377 defer attributes.deinit(builder);4377 defer attributes.deinit(builder);
4378 try o.addCommonFnAttributes(&attributes, zcu.root_mod, zcu.root_mod.omit_frame_pointer);4378 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);
4381 function_index.setCallConv(.fastcc, builder);4381 function_index.setCallConv(.fastcc, builder);
4382 function_index.setAttributes(try attributes.finish(builder), builder);4382 function_index.setAttributes(try attributes.finish(builder), builder);
43834383
...@@ -6351,7 +6351,7 @@ pub const FuncGen = struct {...@@ -6351,7 +6351,7 @@ pub const FuncGen = struct {
6351 .default,6351 .default,
6352 );6352 );
6353 try table_variable.setInitializer(table_val, &o.builder);6353 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);
6355 table_variable.setUnnamedAddr(.unnamed_addr, &o.builder);6355 table_variable.setUnnamedAddr(.unnamed_addr, &o.builder);
63566356
6357 const table_includes_else = item_count != table_len;6357 const table_includes_else = item_count != table_len;