@@ -5294,6 +5294,7 @@ fn trans_log(int lvl, @block_ctxt cx, @ast.expr e) -> result {
5294
5294
auto sub = trans_expr( log_cx, e) ;
5295
5295
auto e_ty = ty. expr_ty( cx. fcx. lcx. ccx. tcx, e) ;
5296
5296
5297
+ auto log_bcx = sub. bcx;
5297
5298
if ( ty. type_is_fp( cx. fcx. lcx. ccx. tcx, e_ty) ) {
5298
5299
let TypeRef tr;
5299
5300
let bool is32bit = false ;
@@ -5310,38 +5311,41 @@ fn trans_log(int lvl, @block_ctxt cx, @ast.expr e) -> result {
5310
5311
}
5311
5312
}
5312
5313
if ( is32bit) {
5313
- auto uval = trans_upcall( sub . bcx ,
5314
+ auto uval = trans_upcall( log_bcx ,
5314
5315
"upcall_log_float" ,
5315
5316
vec( C_int ( lvl) , sub. val) ,
5316
5317
false ) ;
5317
- uval. bcx. build . Br ( after_cx . llbb ) ;
5318
+ log_bcx = uval. bcx;
5318
5319
} else {
5319
- auto tmp = alloca( sub . bcx , tr) ;
5320
+ auto tmp = alloca( log_bcx , tr) ;
5320
5321
sub. bcx. build. Store ( sub. val, tmp) ;
5321
- auto uval = trans_upcall( sub . bcx ,
5322
+ auto uval = trans_upcall( log_bcx ,
5322
5323
"upcall_log_double" ,
5323
- vec( C_int ( lvl) , vp2i( sub . bcx , tmp) ) ,
5324
+ vec( C_int ( lvl) , vp2i( log_bcx , tmp) ) ,
5324
5325
false ) ;
5325
- uval. bcx. build . Br ( after_cx . llbb ) ;
5326
+ log_bcx = uval. bcx;
5326
5327
}
5327
5328
} else {
5328
5329
alt ( ty. struct ( cx. fcx. lcx. ccx. tcx, e_ty) ) {
5329
5330
case ( ty. ty_str) {
5330
- auto v = vp2i( sub . bcx , sub. val) ;
5331
- trans_upcall( sub . bcx ,
5332
- "upcall_log_str" ,
5333
- vec( C_int ( lvl) , v) ,
5334
- false ) . bcx. build . Br ( after_cx . llbb ) ;
5331
+ auto v = vp2i( log_bcx , sub. val) ;
5332
+ log_bcx = trans_upcall( log_bcx ,
5333
+ "upcall_log_str" ,
5334
+ vec( C_int ( lvl) , v) ,
5335
+ false ) . bcx;
5335
5336
}
5336
5337
case ( _) {
5337
5338
auto v = vec( C_int ( lvl) , sub. val) ;
5338
- trans_upcall( sub . bcx ,
5339
- "upcall_log_int" ,
5340
- v, false ) . bcx. build . Br ( after_cx . llbb ) ;
5339
+ log_bcx = trans_upcall( log_bcx ,
5340
+ "upcall_log_int" ,
5341
+ v, false ) . bcx;
5341
5342
}
5342
5343
}
5343
5344
}
5344
5345
5346
+ log_bcx = trans_block_cleanups( log_bcx, log_cx) ;
5347
+ log_bcx. build. Br ( after_cx. llbb) ;
5348
+
5345
5349
ret res( after_cx, C_nil ( ) ) ;
5346
5350
}
5347
5351
0 commit comments