aboutsummaryrefslogtreecommitdiff
path: root/src/comp/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/comp/lib')
-rw-r--r--src/comp/lib/llvm.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/comp/lib/llvm.rs b/src/comp/lib/llvm.rs
index d30bb3ba..0cd177a4 100644
--- a/src/comp/lib/llvm.rs
+++ b/src/comp/lib/llvm.rs
@@ -1069,6 +1069,19 @@ obj builder(BuilderRef B) {
ret llvm.LLVMBuildPtrDiff(B, LHS, RHS, _str.buf(""));
}
+ fn Trap() -> ValueRef {
+ let BasicBlockRef BB = llvm.LLVMGetInsertBlock(B);
+ let ValueRef FN = llvm.LLVMGetBasicBlockParent(BB);
+ let ModuleRef M = llvm.LLVMGetGlobalParent(FN);
+ let ValueRef T = llvm.LLVMGetNamedFunction(M, _str.buf("llvm.trap"));
+ check (T as int != 0);
+ let vec[ValueRef] Args = vec();
+ ret llvm.LLVMBuildCall(B, T,
+ _vec.buf[ValueRef](Args),
+ _vec.len[ValueRef](Args),
+ _str.buf(""));
+ }
+
drop {
llvm.LLVMDisposeBuilder(B);
}