commit d2db1d45f1651d25c779651378b002b027e5f8e4 (tree)
parent 2d88a5a10334bddf3bd0b8bc98744ea6f239ce3a
Author: Robby Zambito <contact@robbyzambito.me>
Date: Tue, 27 Jan 2026 16:42:58 -0500
fix: inline to propagate comptime-ness to call site
See conversation at: https://ziggit.dev/t/why-is-the-comptime-keyword-needed-in-this-inline-for-loop-condition/14090
Diffstat:
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/lib/std/enums.zig b/lib/std/enums.zig
@@ -42,6 +42,7 @@ pub fn EnumFieldStruct(comptime E: type, comptime Data: type, comptime field_def
/// The result array is in the same order as the input.
pub inline fn valuesFromFields(comptime E: type, comptime fields: []const EnumField) []const E {
comptime {
+ @setEvalBranchQuota(@typeInfo(E).@"enum".fields.len + eval_branch_quota_cushion);
var result: [fields.len]E = undefined;
for (&result, fields) |*r, f| {
r.* = @enumFromInt(f.value);
@@ -53,7 +54,7 @@ pub inline fn valuesFromFields(comptime E: type, comptime fields: []const EnumFi
/// Returns the set of all named values in the given enum, in
/// declaration order.
-pub fn values(comptime E: type) []const E {
+pub inline fn values(comptime E: type) []const E {
return comptime valuesFromFields(E, @typeInfo(E).@"enum".fields);
}
diff --git a/src/codegen/x86_64/CodeGen.zig b/src/codegen/x86_64/CodeGen.zig
@@ -177113,7 +177113,7 @@ fn airBr(self: *CodeGen, inst: Air.Inst.Index) !void {
}
fn airAsm(self: *CodeGen, inst: Air.Inst.Index) !void {
- @setEvalBranchQuota(1_100);
+ @setEvalBranchQuota(1_100 + @typeInfo(Mir.Inst.Fixes).@"enum".fields.len);
const pt = self.pt;
const zcu = pt.zcu;
const unwrapped_asm = self.air.unwrapAsm(inst);