@@ -254,7 +254,7 @@ pub fn trans_intrinsic_call<'a, 'tcx>(bcx: &Builder<'a, 'tcx>,
254
254
bcx. volatile_store ( b, dst. project_field ( bcx, 1 ) . llval ) ;
255
255
} else {
256
256
let val = if let OperandValue :: Ref ( ptr, align) = args[ 1 ] . val {
257
- bcx. load ( ptr, Some ( align) )
257
+ bcx. load ( ptr, align)
258
258
} else {
259
259
if dst. layout . is_zst ( ) {
260
260
return ;
@@ -330,9 +330,9 @@ pub fn trans_intrinsic_call<'a, 'tcx>(bcx: &Builder<'a, 'tcx>,
330
330
let overflow = bcx. zext ( bcx. extract_value ( pair, 1 ) , Type :: bool ( ccx) ) ;
331
331
332
332
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 ) ;
334
334
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 ) ;
336
336
337
337
return ;
338
338
} ,
@@ -473,9 +473,9 @@ pub fn trans_intrinsic_call<'a, 'tcx>(bcx: &Builder<'a, 'tcx>,
473
473
let success = bcx. zext ( bcx. extract_value ( pair, 1 ) , Type :: bool ( bcx. ccx ) ) ;
474
474
475
475
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 ) ;
477
477
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 ) ;
479
479
return ;
480
480
} else {
481
481
return invalid_monomorphization ( ty) ;
@@ -544,7 +544,7 @@ pub fn trans_intrinsic_call<'a, 'tcx>(bcx: &Builder<'a, 'tcx>,
544
544
let tp_ty = substs. type_at ( 0 ) ;
545
545
let dst = args[ 0 ] . deref ( bcx. ccx ) ;
546
546
let val = if let OperandValue :: Ref ( ptr, align) = args[ 1 ] . val {
547
- bcx. load ( ptr, Some ( align) )
547
+ bcx. load ( ptr, align)
548
548
} else {
549
549
from_immediate ( bcx, args[ 1 ] . immediate ( ) )
550
550
} ;
@@ -677,7 +677,7 @@ pub fn trans_intrinsic_call<'a, 'tcx>(bcx: &Builder<'a, 'tcx>,
677
677
for i in 0 ..elems. len ( ) {
678
678
let dest = result. project_field ( bcx, i) ;
679
679
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 ) ;
681
681
}
682
682
return ;
683
683
}
@@ -688,8 +688,8 @@ pub fn trans_intrinsic_call<'a, 'tcx>(bcx: &Builder<'a, 'tcx>,
688
688
689
689
if !fn_ty. ret . is_ignore ( ) {
690
690
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 ) ;
693
693
} else {
694
694
OperandRef :: from_immediate_or_packed_pair ( bcx, llval, result. layout )
695
695
. val . store ( bcx, result) ;
@@ -758,7 +758,8 @@ fn try_intrinsic<'a, 'tcx>(
758
758
) {
759
759
if bcx. sess ( ) . no_landing_pads ( ) {
760
760
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) ;
762
763
} else if wants_msvc_seh ( bcx. sess ( ) ) {
763
764
trans_msvc_try ( bcx, ccx, func, data, local_ptr, dest) ;
764
765
} else {
@@ -833,7 +834,8 @@ fn trans_msvc_try<'a, 'tcx>(bcx: &Builder<'a, 'tcx>,
833
834
//
834
835
// More information can be found in libstd's seh.rs implementation.
835
836
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) ;
837
839
bcx. invoke ( func, & [ data] , normal. llbb ( ) , catchswitch. llbb ( ) ,
838
840
None ) ;
839
841
@@ -848,13 +850,15 @@ fn trans_msvc_try<'a, 'tcx>(bcx: &Builder<'a, 'tcx>,
848
850
None => bug ! ( "msvc_try_filter not defined" ) ,
849
851
} ;
850
852
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) ;
853
857
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 ) ;
855
859
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 ) ;
858
862
catchpad. catch_ret ( tok, caught. llbb ( ) ) ;
859
863
860
864
caught. ret ( C_i32 ( ccx, 1 ) ) ;
@@ -863,7 +867,8 @@ fn trans_msvc_try<'a, 'tcx>(bcx: &Builder<'a, 'tcx>,
863
867
// Note that no invoke is used here because by definition this function
864
868
// can't panic (that's what it's catching).
865
869
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) ;
867
872
}
868
873
869
874
// 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>,
923
928
let vals = catch. landing_pad ( lpad_ty, bcx. ccx . eh_personality ( ) , 1 , catch. llfn ( ) ) ;
924
929
catch. add_clause ( vals, C_null ( Type :: i8p ( ccx) ) ) ;
925
930
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) ;
927
933
catch. ret ( C_i32 ( ccx, 1 ) ) ;
928
934
} ) ;
929
935
930
936
// Note that no invoke is used here because by definition this function
931
937
// can't panic (that's what it's catching).
932
938
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) ;
934
941
}
935
942
936
943
// Helper function to give a Block to a closure to translate a shim function.
0 commit comments