diff options
| author | Alex Rønne Petersen <alex@alexrp.com> | 2025-02-24 08:25:23 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-24 08:25:23 +0100 |
| commit | ecc76348e6858f00b920d8dc9e44a6e703d8e497 (patch) | |
| tree | 018e151e85958c8e1b12328865e8b18398956b5e /lib/std | |
| parent | 76558f8c6b8361ab520ea77e4b4cd2bfc8f688ad (diff) | |
| parent | e11ac026623f8d0f4895cddd6a9bf3c03a866c6d (diff) | |
| download | zig-ecc76348e6858f00b920d8dc9e44a6e703d8e497.tar.gz zig-ecc76348e6858f00b920d8dc9e44a6e703d8e497.zip | |
Merge pull request #22154 from alexrp/disable-intrinsics
compiler: Implement `@disableIntrinsics()` builtin function.
Diffstat (limited to 'lib/std')
| -rw-r--r-- | lib/std/zig/AstGen.zig | 2 | ||||
| -rw-r--r-- | lib/std/zig/AstRlAnnotate.zig | 1 | ||||
| -rw-r--r-- | lib/std/zig/BuiltinFn.zig | 9 | ||||
| -rw-r--r-- | lib/std/zig/Zir.zig | 9 |
4 files changed, 20 insertions, 1 deletions
diff --git a/lib/std/zig/AstGen.zig b/lib/std/zig/AstGen.zig index 6aee6880b3..c7f2426b0a 100644 --- a/lib/std/zig/AstGen.zig +++ b/lib/std/zig/AstGen.zig @@ -2956,6 +2956,7 @@ fn addEnsureResult(gz: *GenZir, maybe_unused_result: Zir.Inst.Ref, statement: As .extended => switch (gz.astgen.instructions.items(.data)[@intFromEnum(inst)].extended.opcode) { .breakpoint, .disable_instrumentation, + .disable_intrinsics, .set_float_mode, .branch_hint, => break :b true, @@ -9578,6 +9579,7 @@ fn builtinCall( .frame_address => return rvalue(gz, ri, try gz.addNodeExtended(.frame_address, node), node), .breakpoint => return rvalue(gz, ri, try gz.addNodeExtended(.breakpoint, node), node), .disable_instrumentation => return rvalue(gz, ri, try gz.addNodeExtended(.disable_instrumentation, node), node), + .disable_intrinsics => return rvalue(gz, ri, try gz.addNodeExtended(.disable_intrinsics, node), node), .type_info => return simpleUnOpType(gz, scope, ri, node, params[0], .type_info), .size_of => return simpleUnOpType(gz, scope, ri, node, params[0], .size_of), diff --git a/lib/std/zig/AstRlAnnotate.zig b/lib/std/zig/AstRlAnnotate.zig index e790612505..ccc23b18aa 100644 --- a/lib/std/zig/AstRlAnnotate.zig +++ b/lib/std/zig/AstRlAnnotate.zig @@ -882,6 +882,7 @@ fn builtinCall(astrl: *AstRlAnnotate, block: ?*Block, ri: ResultInfo, node: Ast. .frame, .breakpoint, .disable_instrumentation, + .disable_intrinsics, .in_comptime, .panic, .trap, diff --git a/lib/std/zig/BuiltinFn.zig b/lib/std/zig/BuiltinFn.zig index 7ad5bb1a87..1bf31cd165 100644 --- a/lib/std/zig/BuiltinFn.zig +++ b/lib/std/zig/BuiltinFn.zig @@ -15,6 +15,7 @@ pub const Tag = enum { branch_hint, breakpoint, disable_instrumentation, + disable_intrinsics, mul_add, byte_swap, bit_reverse, @@ -263,6 +264,14 @@ pub const list = list: { }, }, .{ + "@disableIntrinsics", + .{ + .tag = .disable_intrinsics, + .param_count = 0, + .illegal_outside_function = true, + }, + }, + .{ "@mulAdd", .{ .tag = .mul_add, diff --git a/lib/std/zig/Zir.zig b/lib/std/zig/Zir.zig index 32872eeabc..5d013635cb 100644 --- a/lib/std/zig/Zir.zig +++ b/lib/std/zig/Zir.zig @@ -1587,7 +1587,11 @@ pub const Inst = struct { => false, .extended => switch (data.extended.opcode) { - .branch_hint, .breakpoint, .disable_instrumentation => true, + .branch_hint, + .breakpoint, + .disable_instrumentation, + .disable_intrinsics, + => true, else => false, }, }; @@ -2004,6 +2008,8 @@ pub const Inst = struct { breakpoint, /// Implement builtin `@disableInstrumentation`. `operand` is `src_node: i32`. disable_instrumentation, + /// Implement builtin `@disableIntrinsics`. `operand` is `src_node: i32`. + disable_intrinsics, /// Implements the `@select` builtin. /// `operand` is payload index to `Select`. select, @@ -4332,6 +4338,7 @@ fn findTrackableInner( .await_nosuspend, .breakpoint, .disable_instrumentation, + .disable_intrinsics, .select, .int_from_error, .error_from_int, |
