From 8e963f63a8d076c8e2f162ba27c49e6cb1dacb96 Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Wed, 2 Feb 2011 15:23:49 -0800 Subject: Add trace and trap helpers to trans for low level diagnostics. --- src/comp/middle/trans.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/comp') diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index c955340e..d091e3ad 100644 --- a/src/comp/middle/trans.rs +++ b/src/comp/middle/trans.rs @@ -4186,6 +4186,24 @@ fn declare_intrinsics(ModuleRef llmod) -> hashmap[str,ValueRef] { ret intrinsics; } + +fn trace_str(@block_ctxt cx, str s) { + trans_upcall(cx, "upcall_trace_str", vec(p2i(C_cstr(cx.fcx.ccx, s)))); +} + +fn trace_word(@block_ctxt cx, ValueRef v) { + trans_upcall(cx, "upcall_trace_word", vec(v)); +} + +fn trace_ptr(@block_ctxt cx, ValueRef v) { + trace_word(cx, cx.build.PtrToInt(v, T_int())); +} + +fn trap(@block_ctxt bcx) { + let vec[ValueRef] v = vec(); + bcx.build.Call(bcx.fcx.ccx.intrinsics.get("llvm.trap"), v); +} + fn check_module(ModuleRef llmod) { auto pm = mk_pass_manager(); llvm.LLVMAddVerifierPass(pm.llpm); -- cgit v1.2.3