diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2023-04-29 11:13:51 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-29 11:13:51 -0700 |
| commit | c83ab7cc6a7d779eecd51eb10c46d1242aaf1d9d (patch) | |
| tree | 0a079e25b35539cfa169cb529eec278c15003d4c /src/type.zig | |
| parent | 7baf0de807afc8c2c56cc1278e624e9103c30cfb (diff) | |
| parent | bd8b5c25ece2fa158196381004db6e655226576c (diff) | |
| download | zig-c83ab7cc6a7d779eecd51eb10c46d1242aaf1d9d.tar.gz zig-c83ab7cc6a7d779eecd51eb10c46d1242aaf1d9d.zip | |
Merge pull request #15503 from r00ster91/noinline
Sema: emit error for always_inline call of noinline function
Diffstat (limited to 'src/type.zig')
| -rw-r--r-- | src/type.zig | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/type.zig b/src/type.zig index 816a1ee2e0..b25f13342d 100644 --- a/src/type.zig +++ b/src/type.zig @@ -666,6 +666,9 @@ pub const Type = extern union { if (a_info.is_generic != b_info.is_generic) return false; + if (a_info.is_noinline != b_info.is_noinline) + return false; + if (a_info.noalias_bits != b_info.noalias_bits) return false; @@ -1074,6 +1077,7 @@ pub const Type = extern union { } std.hash.autoHash(hasher, fn_info.is_var_args); std.hash.autoHash(hasher, fn_info.is_generic); + std.hash.autoHash(hasher, fn_info.is_noinline); std.hash.autoHash(hasher, fn_info.noalias_bits); std.hash.autoHash(hasher, fn_info.param_types.len); @@ -1454,6 +1458,7 @@ pub const Type = extern union { .alignment = payload.alignment, .is_var_args = payload.is_var_args, .is_generic = payload.is_generic, + .is_noinline = payload.is_noinline, .comptime_params = comptime_params.ptr, .align_is_generic = payload.align_is_generic, .cc_is_generic = payload.cc_is_generic, @@ -2069,6 +2074,9 @@ pub const Type = extern union { .function => { const fn_info = ty.fnInfo(); + if (fn_info.is_noinline) { + try writer.writeAll("noinline "); + } try writer.writeAll("fn("); for (fn_info.param_types, 0..) |param_ty, i| { if (i != 0) try writer.writeAll(", "); @@ -4863,6 +4871,7 @@ pub const Type = extern union { .alignment = 0, .is_var_args = false, .is_generic = false, + .is_noinline = false, .align_is_generic = false, .cc_is_generic = false, .section_is_generic = false, @@ -4877,6 +4886,7 @@ pub const Type = extern union { .alignment = 0, .is_var_args = false, .is_generic = false, + .is_noinline = false, .align_is_generic = false, .cc_is_generic = false, .section_is_generic = false, @@ -4891,6 +4901,7 @@ pub const Type = extern union { .alignment = 0, .is_var_args = false, .is_generic = false, + .is_noinline = false, .align_is_generic = false, .cc_is_generic = false, .section_is_generic = false, @@ -4905,6 +4916,7 @@ pub const Type = extern union { .alignment = 0, .is_var_args = false, .is_generic = false, + .is_noinline = false, .align_is_generic = false, .cc_is_generic = false, .section_is_generic = false, @@ -6367,6 +6379,7 @@ pub const Type = extern union { cc: std.builtin.CallingConvention, is_var_args: bool, is_generic: bool, + is_noinline: bool, align_is_generic: bool, cc_is_generic: bool, section_is_generic: bool, |
