From a7af86155d9b82cd65758c1fd6954aaef053b11a Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Sun, 14 Nov 2010 11:21:49 -0800 Subject: Support emitting trap instructions for debugging. --- src/comp/lib/llvm.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/comp/lib') 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); } -- cgit v1.2.3