From f1cff4fa4a28d42ac9055f94ee9a8f7fd2831cd7 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 9 Jun 2022 15:09:16 -0700 Subject: Sema: avoid use of undefined value for generic fn calls I saw some issues in Valgrind which are fixed after this commit. --- src/Sema.zig | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/Sema.zig b/src/Sema.zig index d64b067771..2d3c38faeb 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -7026,9 +7026,14 @@ fn funcCommon( }); }; - // stage1 bug workaround - const cc_workaround = cc orelse undefined; - const align_workaround = alignment orelse @as(u32, undefined); + // These locals are pulled out from the init expression below to work around + // a stage1 compiler bug. + // In the case of generic calling convention, or generic alignment, we use + // default values which are only meaningful for the generic function, *not* + // the instantiation, which can depend on comptime parameters. + // Related proposal: https://github.com/ziglang/zig/issues/11834 + const cc_workaround = cc orelse .Unspecified; + const align_workaround = alignment orelse 0; break :fn_ty try Type.Tag.function.create(sema.arena, .{ .param_types = param_types, -- cgit v1.2.3