diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2023-03-04 16:20:31 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-04 16:20:31 -0500 |
| commit | e7f128c2051b086cdb1c03da041745b560bbaa3e (patch) | |
| tree | 89d06ee67639dfa0260c5beabc344fb33099df0d /src/codegen/llvm.zig | |
| parent | c9d990d79083f117564837f762c3e225d7fbc5cf (diff) | |
| parent | 4eb3f50fcf6fcfb6b8013571be00b9eeeb909833 (diff) | |
| download | zig-e7f128c2051b086cdb1c03da041745b560bbaa3e.tar.gz zig-e7f128c2051b086cdb1c03da041745b560bbaa3e.zip | |
Merge pull request #14782 from r00ster91/trap
add `@trap` builtin
Diffstat (limited to 'src/codegen/llvm.zig')
| -rw-r--r-- | src/codegen/llvm.zig | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 6f240b88f5..1f8473ac32 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -4590,6 +4590,7 @@ pub const FuncGen = struct { .block => try self.airBlock(inst), .br => try self.airBr(inst), .switch_br => try self.airSwitchBr(inst), + .trap => try self.airTrap(inst), .breakpoint => try self.airBreakpoint(inst), .ret_addr => try self.airRetAddr(inst), .frame_addr => try self.airFrameAddress(inst), @@ -8256,6 +8257,13 @@ pub const FuncGen = struct { return fg.load(ptr, ptr_ty); } + fn airTrap(self: *FuncGen, inst: Air.Inst.Index) !?*llvm.Value { + _ = inst; + const llvm_fn = self.getIntrinsic("llvm.trap", &.{}); + _ = self.builder.buildCall(llvm_fn.globalGetValueType(), llvm_fn, undefined, 0, .Cold, .Auto, ""); + return null; + } + fn airBreakpoint(self: *FuncGen, inst: Air.Inst.Index) !?*llvm.Value { _ = inst; const llvm_fn = self.getIntrinsic("llvm.debugtrap", &.{}); |
