@@ -254,7 +254,7 @@ pub fn trans_intrinsic_call<'a, 'tcx>(bcx: &Builder<'a, 'tcx>,
254254 bcx. volatile_store ( b, dst. project_field ( bcx, 1 ) . llval ) ;
255255 } else {
256256 let val = if let OperandValue :: Ref ( ptr, align) = args[ 1 ] . val {
257- bcx. load ( ptr, Some ( align) )
257+ bcx. load ( ptr, align)
258258 } else {
259259 if dst. layout . is_zst ( ) {
260260 return ;
@@ -330,9 +330,9 @@ pub fn trans_intrinsic_call<'a, 'tcx>(bcx: &Builder<'a, 'tcx>,
330330 let overflow = bcx. zext ( bcx. extract_value ( pair, 1 ) , Type :: bool ( ccx) ) ;
331331
332332 let dest = result. project_field ( bcx, 0 ) ;
333- bcx. store ( val, dest. llval , dest. non_abi_align ( ) ) ;
333+ bcx. store ( val, dest. llval , dest. align ) ;
334334 let dest = result. project_field ( bcx, 1 ) ;
335- bcx. store ( overflow, dest. llval , dest. non_abi_align ( ) ) ;
335+ bcx. store ( overflow, dest. llval , dest. align ) ;
336336
337337 return ;
338338 } ,
@@ -473,9 +473,9 @@ pub fn trans_intrinsic_call<'a, 'tcx>(bcx: &Builder<'a, 'tcx>,
473473 let success = bcx. zext ( bcx. extract_value ( pair, 1 ) , Type :: bool ( bcx. ccx ) ) ;
474474
475475 let dest = result. project_field ( bcx, 0 ) ;
476- bcx. store ( val, dest. llval , dest. non_abi_align ( ) ) ;
476+ bcx. store ( val, dest. llval , dest. align ) ;
477477 let dest = result. project_field ( bcx, 1 ) ;
478- bcx. store ( success, dest. llval , dest. non_abi_align ( ) ) ;
478+ bcx. store ( success, dest. llval , dest. align ) ;
479479 return ;
480480 } else {
481481 return invalid_monomorphization ( ty) ;
@@ -544,7 +544,7 @@ pub fn trans_intrinsic_call<'a, 'tcx>(bcx: &Builder<'a, 'tcx>,
544544 let tp_ty = substs. type_at ( 0 ) ;
545545 let dst = args[ 0 ] . deref ( bcx. ccx ) ;
546546 let val = if let OperandValue :: Ref ( ptr, align) = args[ 1 ] . val {
547- bcx. load ( ptr, Some ( align) )
547+ bcx. load ( ptr, align)
548548 } else {
549549 from_immediate ( bcx, args[ 1 ] . immediate ( ) )
550550 } ;
@@ -677,7 +677,7 @@ pub fn trans_intrinsic_call<'a, 'tcx>(bcx: &Builder<'a, 'tcx>,
677677 for i in 0 ..elems. len ( ) {
678678 let dest = result. project_field ( bcx, i) ;
679679 let val = bcx. extract_value ( val, i as u64 ) ;
680- bcx. store ( val, dest. llval , dest. non_abi_align ( ) ) ;
680+ bcx. store ( val, dest. llval , dest. align ) ;
681681 }
682682 return ;
683683 }
@@ -688,8 +688,8 @@ pub fn trans_intrinsic_call<'a, 'tcx>(bcx: &Builder<'a, 'tcx>,
688688
689689 if !fn_ty. ret . is_ignore ( ) {
690690 if let PassMode :: Cast ( ty) = fn_ty. ret . mode {
691- let ptr = bcx. pointercast ( llresult , ty. llvm_type ( ccx) . ptr_to ( ) ) ;
692- bcx. store ( llval, ptr, Some ( ccx . align_of ( ret_ty ) ) ) ;
691+ let ptr = bcx. pointercast ( result . llval , ty. llvm_type ( ccx) . ptr_to ( ) ) ;
692+ bcx. store ( llval, ptr, result . align ) ;
693693 } else {
694694 OperandRef :: from_immediate_or_packed_pair ( bcx, llval, result. layout )
695695 . val . store ( bcx, result) ;
@@ -758,7 +758,8 @@ fn try_intrinsic<'a, 'tcx>(
758758) {
759759 if bcx. sess ( ) . no_landing_pads ( ) {
760760 bcx. call ( func, & [ data] , None ) ;
761- bcx. store ( C_null ( Type :: i8p ( & bcx. ccx ) ) , dest, None ) ;
761+ let ptr_align = bcx. tcx ( ) . data_layout . pointer_align ;
762+ bcx. store ( C_null ( Type :: i8p ( & bcx. ccx ) ) , dest, ptr_align) ;
762763 } else if wants_msvc_seh ( bcx. sess ( ) ) {
763764 trans_msvc_try ( bcx, ccx, func, data, local_ptr, dest) ;
764765 } else {
@@ -833,7 +834,8 @@ fn trans_msvc_try<'a, 'tcx>(bcx: &Builder<'a, 'tcx>,
833834 //
834835 // More information can be found in libstd's seh.rs implementation.
835836 let i64p = Type :: i64 ( ccx) . ptr_to ( ) ;
836- let slot = bcx. alloca ( i64p, "slot" , ccx. data_layout ( ) . pointer_align ) ;
837+ let ptr_align = bcx. tcx ( ) . data_layout . pointer_align ;
838+ let slot = bcx. alloca ( i64p, "slot" , ptr_align) ;
837839 bcx. invoke ( func, & [ data] , normal. llbb ( ) , catchswitch. llbb ( ) ,
838840 None ) ;
839841
@@ -848,13 +850,15 @@ fn trans_msvc_try<'a, 'tcx>(bcx: &Builder<'a, 'tcx>,
848850 None => bug ! ( "msvc_try_filter not defined" ) ,
849851 } ;
850852 let tok = catchpad. catch_pad ( cs, & [ tydesc, C_i32 ( ccx, 0 ) , slot] ) ;
851- let addr = catchpad. load ( slot, None ) ;
852- let arg1 = catchpad. load ( addr, None ) ;
853+ let addr = catchpad. load ( slot, ptr_align) ;
854+
855+ let i64_align = bcx. tcx ( ) . data_layout . i64_align ;
856+ let arg1 = catchpad. load ( addr, i64_align) ;
853857 let val1 = C_i32 ( ccx, 1 ) ;
854- let arg2 = catchpad. load ( catchpad. inbounds_gep ( addr, & [ val1] ) , None ) ;
858+ let arg2 = catchpad. load ( catchpad. inbounds_gep ( addr, & [ val1] ) , i64_align ) ;
855859 let local_ptr = catchpad. bitcast ( local_ptr, i64p) ;
856- catchpad. store ( arg1, local_ptr, None ) ;
857- catchpad. store ( arg2, catchpad. inbounds_gep ( local_ptr, & [ val1] ) , None ) ;
860+ catchpad. store ( arg1, local_ptr, i64_align ) ;
861+ catchpad. store ( arg2, catchpad. inbounds_gep ( local_ptr, & [ val1] ) , i64_align ) ;
858862 catchpad. catch_ret ( tok, caught. llbb ( ) ) ;
859863
860864 caught. ret ( C_i32 ( ccx, 1 ) ) ;
@@ -863,7 +867,8 @@ fn trans_msvc_try<'a, 'tcx>(bcx: &Builder<'a, 'tcx>,
863867 // Note that no invoke is used here because by definition this function
864868 // can't panic (that's what it's catching).
865869 let ret = bcx. call ( llfn, & [ func, data, local_ptr] , None ) ;
866- bcx. store ( ret, dest, None ) ;
870+ let i32_align = bcx. tcx ( ) . data_layout . i32_align ;
871+ bcx. store ( ret, dest, i32_align) ;
867872}
868873
869874// Definition of the standard "try" function for Rust using the GNU-like model
@@ -923,14 +928,16 @@ fn trans_gnu_try<'a, 'tcx>(bcx: &Builder<'a, 'tcx>,
923928 let vals = catch. landing_pad ( lpad_ty, bcx. ccx . eh_personality ( ) , 1 , catch. llfn ( ) ) ;
924929 catch. add_clause ( vals, C_null ( Type :: i8p ( ccx) ) ) ;
925930 let ptr = catch. extract_value ( vals, 0 ) ;
926- catch. store ( ptr, catch. bitcast ( local_ptr, Type :: i8p ( ccx) . ptr_to ( ) ) , None ) ;
931+ let ptr_align = bcx. tcx ( ) . data_layout . pointer_align ;
932+ catch. store ( ptr, catch. bitcast ( local_ptr, Type :: i8p ( ccx) . ptr_to ( ) ) , ptr_align) ;
927933 catch. ret ( C_i32 ( ccx, 1 ) ) ;
928934 } ) ;
929935
930936 // Note that no invoke is used here because by definition this function
931937 // can't panic (that's what it's catching).
932938 let ret = bcx. call ( llfn, & [ func, data, local_ptr] , None ) ;
933- bcx. store ( ret, dest, None ) ;
939+ let i32_align = bcx. tcx ( ) . data_layout . i32_align ;
940+ bcx. store ( ret, dest, i32_align) ;
934941}
935942
936943// Helper function to give a Block to a closure to translate a shim function.
0 commit comments