@@ -13,7 +13,7 @@ pub(super) fn codegen_return_param<'tcx>(
13
13
block_params_iter : & mut impl Iterator < Item = Value > ,
14
14
) -> CPlace < ' tcx > {
15
15
let ( ret_place, ret_param) : ( _ , SmallVec < [ _ ; 2 ] > ) = match fx. fn_abi . as_ref ( ) . unwrap ( ) . ret . mode {
16
- PassMode :: Ignore | PassMode :: Direct ( _) | PassMode :: Pair ( _, _) | PassMode :: Cast ( .. ) => {
16
+ PassMode :: Ignore | PassMode :: Direct ( _) | PassMode :: Pair ( _, _) | PassMode :: Cast { .. } => {
17
17
let is_ssa =
18
18
ssa_analyzed[ RETURN_PLACE ] . is_ssa ( fx, fx. fn_abi . as_ref ( ) . unwrap ( ) . ret . layout . ty ) ;
19
19
(
@@ -26,15 +26,15 @@ pub(super) fn codegen_return_param<'tcx>(
26
26
smallvec ! [ ] ,
27
27
)
28
28
}
29
- PassMode :: Indirect { attrs : _, extra_attrs : None , on_stack : _ } => {
29
+ PassMode :: Indirect { attrs : _, meta_attrs : None , on_stack : _ } => {
30
30
let ret_param = block_params_iter. next ( ) . unwrap ( ) ;
31
31
assert_eq ! ( fx. bcx. func. dfg. value_type( ret_param) , fx. pointer_type) ;
32
32
(
33
33
CPlace :: for_ptr ( Pointer :: new ( ret_param) , fx. fn_abi . as_ref ( ) . unwrap ( ) . ret . layout ) ,
34
34
smallvec ! [ ret_param] ,
35
35
)
36
36
}
37
- PassMode :: Indirect { attrs : _, extra_attrs : Some ( _) , on_stack : _ } => {
37
+ PassMode :: Indirect { attrs : _, meta_attrs : Some ( _) , on_stack : _ } => {
38
38
unreachable ! ( "unsized return value" )
39
39
}
40
40
} ;
@@ -62,7 +62,7 @@ pub(super) fn codegen_with_call_return_arg<'tcx>(
62
62
) {
63
63
let ( ret_temp_place, return_ptr) = match ret_arg_abi. mode {
64
64
PassMode :: Ignore => ( None , None ) ,
65
- PassMode :: Indirect { attrs : _, extra_attrs : None , on_stack : _ } => {
65
+ PassMode :: Indirect { attrs : _, meta_attrs : None , on_stack : _ } => {
66
66
if let Some ( ret_ptr) = ret_place. try_to_ptr ( ) {
67
67
// This is an optimization to prevent unnecessary copies of the return value when
68
68
// the return place is already a memory place as opposed to a register.
@@ -73,10 +73,10 @@ pub(super) fn codegen_with_call_return_arg<'tcx>(
73
73
( Some ( place) , Some ( place. to_ptr ( ) . get_addr ( fx) ) )
74
74
}
75
75
}
76
- PassMode :: Indirect { attrs : _, extra_attrs : Some ( _) , on_stack : _ } => {
76
+ PassMode :: Indirect { attrs : _, meta_attrs : Some ( _) , on_stack : _ } => {
77
77
unreachable ! ( "unsized return value" )
78
78
}
79
- PassMode :: Direct ( _) | PassMode :: Pair ( _, _) | PassMode :: Cast ( .. ) => ( None , None ) ,
79
+ PassMode :: Direct ( _) | PassMode :: Pair ( _, _) | PassMode :: Cast { .. } => ( None , None ) ,
80
80
} ;
81
81
82
82
let call_inst = f ( fx, return_ptr) ;
@@ -93,21 +93,21 @@ pub(super) fn codegen_with_call_return_arg<'tcx>(
93
93
ret_place
94
94
. write_cvalue ( fx, CValue :: by_val_pair ( ret_val_a, ret_val_b, ret_arg_abi. layout ) ) ;
95
95
}
96
- PassMode :: Cast ( ref cast, _ ) => {
96
+ PassMode :: Cast { ref cast, .. } => {
97
97
let results =
98
98
fx. bcx . inst_results ( call_inst) . iter ( ) . copied ( ) . collect :: < SmallVec < [ Value ; 2 ] > > ( ) ;
99
99
let result =
100
100
super :: pass_mode:: from_casted_value ( fx, & results, ret_place. layout ( ) , cast) ;
101
101
ret_place. write_cvalue ( fx, result) ;
102
102
}
103
- PassMode :: Indirect { attrs : _, extra_attrs : None , on_stack : _ } => {
103
+ PassMode :: Indirect { attrs : _, meta_attrs : None , on_stack : _ } => {
104
104
if let Some ( ret_temp_place) = ret_temp_place {
105
105
// If ret_temp_place is None, it is not necessary to copy the return value.
106
106
let ret_temp_value = ret_temp_place. to_cvalue ( fx) ;
107
107
ret_place. write_cvalue ( fx, ret_temp_value) ;
108
108
}
109
109
}
110
- PassMode :: Indirect { attrs : _, extra_attrs : Some ( _) , on_stack : _ } => {
110
+ PassMode :: Indirect { attrs : _, meta_attrs : Some ( _) , on_stack : _ } => {
111
111
unreachable ! ( "unsized return value" )
112
112
}
113
113
}
@@ -116,10 +116,10 @@ pub(super) fn codegen_with_call_return_arg<'tcx>(
116
116
/// Codegen a return instruction with the right return value(s) if any.
117
117
pub ( crate ) fn codegen_return ( fx : & mut FunctionCx < ' _ , ' _ , ' _ > ) {
118
118
match fx. fn_abi . as_ref ( ) . unwrap ( ) . ret . mode {
119
- PassMode :: Ignore | PassMode :: Indirect { attrs : _, extra_attrs : None , on_stack : _ } => {
119
+ PassMode :: Ignore | PassMode :: Indirect { attrs : _, meta_attrs : None , on_stack : _ } => {
120
120
fx. bcx . ins ( ) . return_ ( & [ ] ) ;
121
121
}
122
- PassMode :: Indirect { attrs : _, extra_attrs : Some ( _) , on_stack : _ } => {
122
+ PassMode :: Indirect { attrs : _, meta_attrs : Some ( _) , on_stack : _ } => {
123
123
unreachable ! ( "unsized return value" )
124
124
}
125
125
PassMode :: Direct ( _) => {
@@ -132,7 +132,7 @@ pub(crate) fn codegen_return(fx: &mut FunctionCx<'_, '_, '_>) {
132
132
let ( ret_val_a, ret_val_b) = place. to_cvalue ( fx) . load_scalar_pair ( fx) ;
133
133
fx. bcx . ins ( ) . return_ ( & [ ret_val_a, ret_val_b] ) ;
134
134
}
135
- PassMode :: Cast ( ref cast, _ ) => {
135
+ PassMode :: Cast { ref cast, .. } => {
136
136
let place = fx. get_local_place ( RETURN_PLACE ) ;
137
137
let ret_val = place. to_cvalue ( fx) ;
138
138
let ret_vals = super :: pass_mode:: to_casted_value ( fx, ret_val, cast) ;
0 commit comments