Commit d6bd00e855
Changed files (6)
lib/docs/main.js
@@ -1187,10 +1187,6 @@ const NAV_MODES = {
payloadHtml += "panic";
break;
}
- case "set_cold": {
- payloadHtml += "setCold";
- break;
- }
case "set_runtime_safety": {
payloadHtml += "setRuntimeSafety";
break;
src/AstGen.zig
@@ -2609,8 +2609,9 @@ fn addEnsureResult(gz: *GenZir, maybe_unused_result: Zir.Inst.Ref, statement: As
.extended => switch (gz.astgen.instructions.items(.data)[inst].extended.opcode) {
.breakpoint,
.fence,
- .set_align_stack,
.set_float_mode,
+ .set_align_stack,
+ .set_cold,
=> break :b true,
else => break :b false,
},
@@ -2658,7 +2659,6 @@ fn addEnsureResult(gz: *GenZir, maybe_unused_result: Zir.Inst.Ref, statement: As
.validate_struct_init_comptime,
.validate_array_init,
.validate_array_init_comptime,
- .set_cold,
.set_runtime_safety,
.closure_capture,
.memcpy,
@@ -8078,6 +8078,14 @@ fn builtinCall(
});
return rvalue(gz, ri, result, node);
},
+ .set_cold => {
+ const order = try expr(gz, scope, ri, params[0]);
+ const result = try gz.addExtendedPayload(.set_cold, Zir.Inst.UnNode{
+ .node = gz.nodeIndexToRelative(node),
+ .operand = order,
+ });
+ return rvalue(gz, ri, result, node);
+ },
.src => {
const token_starts = tree.tokens.items(.start);
@@ -8111,7 +8119,6 @@ fn builtinCall(
.bool_to_int => return simpleUnOp(gz, scope, ri, node, bool_ri, params[0], .bool_to_int),
.embed_file => return simpleUnOp(gz, scope, ri, node, .{ .rl = .{ .ty = .const_slice_u8_type } }, params[0], .embed_file),
.error_name => return simpleUnOp(gz, scope, ri, node, .{ .rl = .{ .ty = .anyerror_type } }, params[0], .error_name),
- .set_cold => return simpleUnOp(gz, scope, ri, node, bool_ri, params[0], .set_cold),
.set_runtime_safety => return simpleUnOp(gz, scope, ri, node, bool_ri, params[0], .set_runtime_safety),
.sqrt => return simpleUnOp(gz, scope, ri, node, .{ .rl = .none }, params[0], .sqrt),
.sin => return simpleUnOp(gz, scope, ri, node, .{ .rl = .none }, params[0], .sin),
src/Autodoc.zig
@@ -1338,7 +1338,6 @@ fn walkInstruction(
.embed_file,
.error_name,
.panic,
- .set_cold, // @check
.set_runtime_safety, // @check
.sqrt,
.sin,
src/print_zir.zig
@@ -196,7 +196,6 @@ const Writer = struct {
.error_name,
.panic,
.panic_comptime,
- .set_cold,
.set_runtime_safety,
.sqrt,
.sin,
@@ -503,6 +502,7 @@ const Writer = struct {
.fence,
.set_float_mode,
.set_align_stack,
+ .set_cold,
.wasm_memory_size,
.error_to_int,
.int_to_error,
src/Sema.zig
@@ -1167,6 +1167,11 @@ fn analyzeBodyInner(
i += 1;
continue;
},
+ .set_cold => {
+ try sema.zirSetCold(block, extended);
+ i += 1;
+ continue;
+ },
.breakpoint => {
if (!block.is_comptime) {
_ = try block.addNoOp(.breakpoint);
@@ -1304,11 +1309,6 @@ fn analyzeBodyInner(
i += 1;
continue;
},
- .set_cold => {
- try sema.zirSetCold(block, inst);
- i += 1;
- continue;
- },
.set_runtime_safety => {
try sema.zirSetRuntimeSafety(block, inst);
i += 1;
@@ -5721,10 +5721,10 @@ fn zirSetAlignStack(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.Inst
gop.value_ptr.* = .{ .alignment = alignment, .src = src };
}
-fn zirSetCold(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void {
- const inst_data = sema.code.instructions.items(.data)[inst].un_node;
- const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node };
- const is_cold = try sema.resolveConstBool(block, operand_src, inst_data.operand, "operand to @setCold must be comptime-known");
+fn zirSetCold(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData) CompileError!void {
+ const extra = sema.code.extraData(Zir.Inst.UnNode, extended.operand).data;
+ const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = extra.node };
+ const is_cold = try sema.resolveConstBool(block, operand_src, extra.operand, "operand to @setCold must be comptime-known");
const func = sema.func orelse return; // does nothing outside a function
func.is_cold = is_cold;
}
src/Zir.zig
@@ -808,8 +808,6 @@ pub const Inst = struct {
panic,
/// Same as `panic` but forces comptime.
panic_comptime,
- /// Implement builtin `@setCold`. Uses `un_node`.
- set_cold,
/// Implement builtin `@setRuntimeSafety`. Uses `un_node`.
set_runtime_safety,
/// Implement builtin `@sqrt`. Uses `un_node`.
@@ -1187,7 +1185,6 @@ pub const Inst = struct {
.bool_to_int,
.embed_file,
.error_name,
- .set_cold,
.set_runtime_safety,
.sqrt,
.sin,
@@ -1323,7 +1320,6 @@ pub const Inst = struct {
.validate_deref,
.@"export",
.export_value,
- .set_cold,
.set_runtime_safety,
.memcpy,
.memset,
@@ -1561,7 +1557,7 @@ pub const Inst = struct {
=> false,
.extended => switch (data.extended.opcode) {
- .breakpoint, .fence => true,
+ .fence, .set_cold, .breakpoint => true,
else => false,
},
};
@@ -1750,7 +1746,6 @@ pub const Inst = struct {
.error_name = .un_node,
.panic = .un_node,
.panic_comptime = .un_node,
- .set_cold = .un_node,
.set_runtime_safety = .un_node,
.sqrt = .un_node,
.sin = .un_node,
@@ -1979,6 +1974,9 @@ pub const Inst = struct {
/// Implement builtin `@setAlignStack`.
/// `operand` is payload index to `UnNode`.
set_align_stack,
+ /// Implements `@setCold`.
+ /// `operand` is payload index to `UnNode`.
+ set_cold,
/// Implements the `@errSetCast` builtin.
/// `operand` is payload index to `BinNode`. `lhs` is dest type, `rhs` is operand.
err_set_cast,