@@ -404,6 +404,11 @@ impl<'a, 'gcc, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'gcc, 'tcx> {
404404 func. new_block ( name)
405405 }
406406
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+
407412 fn ret_void ( & mut self ) {
408413 self . llbb ( ) . end_with_void_return ( None )
409414 }
@@ -886,19 +891,20 @@ impl<'a, 'gcc, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'gcc, 'tcx> {
886891
887892 self . br ( header_bb) ;
888893
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) ;
892897
893- let mut body_bx = Builder :: build ( self . cx , body_bb) ;
898+ self . switch_to_block ( body_bb) ;
894899 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) ) ;
896901
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) ;
900905
901- Builder :: build ( self . cx , next_bb)
906+ self . switch_to_block ( next_bb) ;
907+ self
902908 }
903909
904910 fn range_metadata ( & mut self , _load : RValue < ' gcc > , _range : WrappingRange ) {
0 commit comments