@@ -2736,13 +2736,14 @@ where
2736
2736
let arg_of = |ty : Ty < ' tcx > , arg_idx : Option < usize > | {
2737
2737
let is_return = arg_idx. is_none ( ) ;
2738
2738
2739
+ let layout = cx. layout_of ( ty) ;
2739
2740
let layout = if force_thin_self_ptr && arg_idx == Some ( 0 ) {
2740
2741
// Don't pass the vtable, it's not an argument of the virtual fn.
2741
2742
// Instead, pass just the data pointer, but give it the type `*const/mut dyn Trait`
2742
2743
// or `&/&mut dyn Trait` because this is special-cased elsewhere in codegen
2743
- make_thin_self_ptr ( cx, cx . layout_of ( ty ) )
2744
+ make_thin_self_ptr ( cx, layout )
2744
2745
} else {
2745
- cx . layout_of ( ty )
2746
+ layout
2746
2747
} ;
2747
2748
2748
2749
let mut arg = ArgAbi :: new ( cx, layout, |layout, scalar, offset| {
@@ -2842,11 +2843,9 @@ where
2842
2843
let max_by_val_size = Pointer . size ( cx) * 2 ;
2843
2844
let size = arg. layout . size ;
2844
2845
2845
- assert ! (
2846
- matches!( arg. mode, PassMode :: Indirect { on_stack: false , .. } ) ,
2847
- "{:?}" ,
2848
- arg
2849
- ) ;
2846
+ let is_indirect_not_on_stack =
2847
+ matches ! ( arg. mode, PassMode :: Indirect { on_stack: false , .. } ) ;
2848
+ assert ! ( is_indirect_not_on_stack, "{:?}" , arg) ;
2850
2849
if !arg. layout . is_unsized ( ) && size <= max_by_val_size {
2851
2850
// We want to pass small aggregates as immediates, but using
2852
2851
// a LLVM aggregate type for this leads to bad optimizations,
0 commit comments