@@ -856,7 +856,8 @@ fn get_upcall(&hashmap[str, ValueRef] upcalls,
856
856
857
857
fn trans_upcall ( @block_ctxt cx , str name , vec[ ValueRef ] args ) -> result {
858
858
auto cxx = cx. fcx . ccx ;
859
- auto t = trans_upcall2 ( cx. build , cxx. glues , cx. fcx . lltaskptr ,
859
+ auto lltaskptr = cx. build . PtrToInt ( cx. fcx . lltaskptr , T_int ( ) ) ;
860
+ auto t = trans_upcall2 ( cx. build , cxx. glues , lltaskptr,
860
861
cxx. upcalls , cxx. tn , cxx. llmod , name, args) ;
861
862
ret res( cx, t) ;
862
863
}
@@ -871,7 +872,7 @@ fn trans_upcall2(builder b, @glue_fns glues, ValueRef lltaskptr,
871
872
872
873
let ValueRef llglue = glues. upcall_glues . ( n) ;
873
874
let vec[ ValueRef ] call_args = vec ( llupcall) ;
874
- call_args += vec ( b. PtrToInt ( lltaskptr, T_int ( ) ) ) ;
875
+ call_args += vec ( b. ZExtOrBitCast ( lltaskptr, T_int ( ) ) ) ;
875
876
876
877
for ( ValueRef a in args) {
877
878
call_args += vec ( b. ZExtOrBitCast ( a, T_int ( ) ) ) ;
@@ -5692,8 +5693,9 @@ fn trans_exit_task_glue(@glue_fns glues,
5692
5693
5693
5694
auto entrybb = llvm. LLVMAppendBasicBlock ( llfn, _str. buf ( "entry" ) ) ;
5694
5695
auto build = new_builder ( entrybb) ;
5696
+ auto tptr = build. PtrToInt ( lltaskptr, T_int ( ) ) ;
5695
5697
5696
- trans_upcall2 ( build, glues, lltaskptr ,
5698
+ trans_upcall2 ( build, glues, tptr ,
5697
5699
upcalls, tn, llmod, "upcall_exit" , V_args ) ;
5698
5700
build. RetVoid ( ) ;
5699
5701
}
0 commit comments