From 762ad4c6f49dfa1b8893353fb099d4e93672733f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Sun, 20 Oct 2024 08:52:32 +0200 Subject: [PATCH] link: Use defaultFunctionAlignment() when function alignment is unspecified. max(user_align, minFunctionAlignment()) is only appropriate when the user has actually given an explicit, non-zero alignment value. --- src/link/Coff.zig | 8 +++++--- src/link/Elf/ZigObject.zig | 8 +++++--- src/link/MachO/ZigObject.zig | 8 +++++--- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/link/Coff.zig b/src/link/Coff.zig index 1b25ee5e09..4da960f552 100644 --- a/src/link/Coff.zig +++ b/src/link/Coff.zig @@ -1391,9 +1391,11 @@ fn updateNavCode( log.debug("updateNavCode {} 0x{x}", .{ nav.fqn.fmt(ip), nav_index }); - const required_alignment = pt.navAlignment(nav_index).max( - target_util.minFunctionAlignment(zcu.navFileScope(nav_index).mod.resolved_target.result), - ); + const target = zcu.navFileScope(nav_index).mod.resolved_target.result; + const required_alignment = switch (pt.navAlignment(nav_index)) { + .none => target_util.defaultFunctionAlignment(target), + else => |a| a.maxStrict(target_util.minFunctionAlignment(target)), + }; const nav_metadata = self.navs.get(nav_index).?; const atom_index = nav_metadata.atom; diff --git a/src/link/Elf/ZigObject.zig b/src/link/Elf/ZigObject.zig index 893d3ce336..d77b7fc39b 100644 --- a/src/link/Elf/ZigObject.zig +++ b/src/link/Elf/ZigObject.zig @@ -1277,9 +1277,11 @@ fn updateNavCode( log.debug("updateNavCode {}({d})", .{ nav.fqn.fmt(ip), nav_index }); - const required_alignment = pt.navAlignment(nav_index).max( - target_util.minFunctionAlignment(zcu.navFileScope(nav_index).mod.resolved_target.result), - ); + const target = zcu.navFileScope(nav_index).mod.resolved_target.result; + const required_alignment = switch (pt.navAlignment(nav_index)) { + .none => target_util.defaultFunctionAlignment(target), + else => |a| a.maxStrict(target_util.minFunctionAlignment(target)), + }; const sym = self.symbol(sym_index); const esym = &self.symtab.items(.elf_sym)[sym.esym_index]; diff --git a/src/link/MachO/ZigObject.zig b/src/link/MachO/ZigObject.zig index 666a73f600..097be1bc70 100644 --- a/src/link/MachO/ZigObject.zig +++ b/src/link/MachO/ZigObject.zig @@ -962,9 +962,11 @@ fn updateNavCode( log.debug("updateNavCode {} 0x{x}", .{ nav.fqn.fmt(ip), nav_index }); - const required_alignment = pt.navAlignment(nav_index).max( - target_util.minFunctionAlignment(zcu.navFileScope(nav_index).mod.resolved_target.result), - ); + const target = zcu.navFileScope(nav_index).mod.resolved_target.result; + const required_alignment = switch (pt.navAlignment(nav_index)) { + .none => target_util.defaultFunctionAlignment(target), + else => |a| a.maxStrict(target_util.minFunctionAlignment(target)), + }; const sect = &macho_file.sections.items(.header)[sect_index]; const sym = &self.symbols.items[sym_index];