@@ -404,6 +404,11 @@ impl<'a, 'gcc, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'gcc, 'tcx> {
404
404
func. new_block ( name)
405
405
}
406
406
407
+ fn switch_to_block ( & mut self , block : Self :: BasicBlock ) {
408
+ * self . cx . current_block . borrow_mut ( ) = Some ( block) ;
409
+ self . block = Some ( block) ;
410
+ }
411
+
407
412
fn ret_void ( & mut self ) {
408
413
self . llbb ( ) . end_with_void_return ( None )
409
414
}
@@ -886,19 +891,20 @@ impl<'a, 'gcc, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'gcc, 'tcx> {
886
891
887
892
self . br ( header_bb) ;
888
893
889
- let mut header_bx = Builder :: build ( self . cx , header_bb) ;
890
- let keep_going = header_bx . icmp ( IntPredicate :: IntNE , current_val, end) ;
891
- header_bx . cond_br ( keep_going, body_bb, next_bb) ;
894
+ self . switch_to_block ( header_bb) ;
895
+ let keep_going = self . icmp ( IntPredicate :: IntNE , current_val, end) ;
896
+ self . cond_br ( keep_going, body_bb, next_bb) ;
892
897
893
- let mut body_bx = Builder :: build ( self . cx , body_bb) ;
898
+ self . switch_to_block ( body_bb) ;
894
899
let align = dest. align . restrict_for_offset ( dest. layout . field ( self . cx ( ) , 0 ) . size ) ;
895
- cg_elem. val . store ( & mut body_bx , PlaceRef :: new_sized_aligned ( current_val, cg_elem. layout , align) ) ;
900
+ cg_elem. val . store ( & mut self , PlaceRef :: new_sized_aligned ( current_val, cg_elem. layout , align) ) ;
896
901
897
- let next = body_bx . inbounds_gep ( self . backend_type ( cg_elem. layout ) , current. to_rvalue ( ) , & [ self . const_usize ( 1 ) ] ) ;
898
- body_bx . llbb ( ) . add_assignment ( None , current, next) ;
899
- body_bx . br ( header_bb) ;
902
+ let next = self . inbounds_gep ( self . backend_type ( cg_elem. layout ) , current. to_rvalue ( ) , & [ self . const_usize ( 1 ) ] ) ;
903
+ self . llbb ( ) . add_assignment ( None , current, next) ;
904
+ self . br ( header_bb) ;
900
905
901
- Builder :: build ( self . cx , next_bb)
906
+ self . switch_to_block ( next_bb) ;
907
+ self
902
908
}
903
909
904
910
fn range_metadata ( & mut self , _load : RValue < ' gcc > , _range : WrappingRange ) {
0 commit comments