@@ -61,12 +61,11 @@ crate fn eval_nullary_intrinsic<'tcx>(
61
61
ConstValue :: Slice { data : alloc, start : 0 , end : alloc. len ( ) }
62
62
}
63
63
sym:: needs_drop => ConstValue :: from_bool ( tp_ty. needs_drop ( tcx, param_env) ) ,
64
- sym:: size_of | sym :: min_align_of | sym:: pref_align_of => {
64
+ sym:: min_align_of | sym:: pref_align_of => {
65
65
let layout = tcx. layout_of ( param_env. and ( tp_ty) ) . map_err ( |e| err_inval ! ( Layout ( e) ) ) ?;
66
66
let n = match name {
67
67
sym:: pref_align_of => layout. align . pref . bytes ( ) ,
68
68
sym:: min_align_of => layout. align . abi . bytes ( ) ,
69
- sym:: size_of => layout. size . bytes ( ) ,
70
69
_ => bug ! ( ) ,
71
70
} ;
72
71
ConstValue :: from_machine_usize ( n, & tcx)
@@ -125,7 +124,6 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
125
124
let ( dest, ret) = match ret {
126
125
None => match intrinsic_name {
127
126
sym:: transmute => throw_ub_format ! ( "transmuting to uninhabited type" ) ,
128
- sym:: unreachable => throw_ub ! ( Unreachable ) ,
129
127
sym:: abort => M :: abort ( self , "the program aborted execution" . to_owned ( ) ) ?,
130
128
// Unsupported diverging intrinsic.
131
129
_ => return Ok ( false ) ,
@@ -160,13 +158,12 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
160
158
sym:: min_align_of
161
159
| sym:: pref_align_of
162
160
| sym:: needs_drop
163
- | sym:: size_of
164
161
| sym:: type_id
165
162
| sym:: type_name
166
163
| sym:: variant_count => {
167
164
let gid = GlobalId { instance, promoted : None } ;
168
165
let ty = match intrinsic_name {
169
- sym:: min_align_of | sym:: pref_align_of | sym:: size_of | sym :: variant_count => {
166
+ sym:: min_align_of | sym:: pref_align_of | sym:: variant_count => {
170
167
self . tcx . types . usize
171
168
}
172
169
sym:: needs_drop => self . tcx . types . bool ,
@@ -212,28 +209,16 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
212
209
let out_val = numeric_intrinsic ( intrinsic_name, bits, kind) ?;
213
210
self . write_scalar ( out_val, dest) ?;
214
211
}
215
- sym:: wrapping_add
216
- | sym:: wrapping_sub
217
- | sym:: wrapping_mul
218
- | sym:: add_with_overflow
219
- | sym:: sub_with_overflow
220
- | sym:: mul_with_overflow => {
212
+ sym:: add_with_overflow | sym:: sub_with_overflow | sym:: mul_with_overflow => {
221
213
let lhs = self . read_immediate ( args[ 0 ] ) ?;
222
214
let rhs = self . read_immediate ( args[ 1 ] ) ?;
223
- let ( bin_op, ignore_overflow) = match intrinsic_name {
224
- sym:: wrapping_add => ( BinOp :: Add , true ) ,
225
- sym:: wrapping_sub => ( BinOp :: Sub , true ) ,
226
- sym:: wrapping_mul => ( BinOp :: Mul , true ) ,
227
- sym:: add_with_overflow => ( BinOp :: Add , false ) ,
228
- sym:: sub_with_overflow => ( BinOp :: Sub , false ) ,
229
- sym:: mul_with_overflow => ( BinOp :: Mul , false ) ,
215
+ let bin_op = match intrinsic_name {
216
+ sym:: add_with_overflow => BinOp :: Add ,
217
+ sym:: sub_with_overflow => BinOp :: Sub ,
218
+ sym:: mul_with_overflow => BinOp :: Mul ,
230
219
_ => bug ! ( "Already checked for int ops" ) ,
231
220
} ;
232
- if ignore_overflow {
233
- self . binop_ignore_overflow ( bin_op, lhs, rhs, dest) ?;
234
- } else {
235
- self . binop_with_overflow ( bin_op, lhs, rhs, dest) ?;
236
- }
221
+ self . binop_with_overflow ( bin_op, lhs, rhs, dest) ?;
237
222
}
238
223
sym:: saturating_add | sym:: saturating_sub => {
239
224
let l = self . read_immediate ( args[ 0 ] ) ?;
0 commit comments