From 21efd07bc16c2e7614b5f37282d763d6de7d75bb Mon Sep 17 00:00:00 2001 From: Eric Holk Date: Fri, 20 May 2011 18:27:23 -0700 Subject: [PATCH] New tasks run, but their arguments get lost and something ends up in an infinite loop when the task exits. --- src/comp/middle/trans.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index 9c3f5178fec..643135f9407 100644 --- a/src/comp/middle/trans.rs +++ b/src/comp/middle/trans.rs @@ -5932,8 +5932,12 @@ fn trans_spawn(&@block_ctxt cx, auto llfnptr = bcx.build.GEP(fnptr.val, [C_int(0), C_int(0)]); log_err "Casting llfnptr"; - auto llfnptr_i = bcx.build.PointerCast(llfnptr, - T_int()); + auto llfnptrptr_i = bcx.build.PointerCast(llfnptr, + T_ptr(T_int())); + // We'd better dereference this one more time, since that one points into + // the symbol table or something. + auto llfnptr_i = bcx.build.Load(llfnptrptr_i); + log_err "Cassting llargs"; auto llargs_i = bcx.build.PointerCast(llargs.val, T_int());