1
1
use rustc_hir:: def:: DefKind ;
2
2
use rustc_hir:: { LangItem , CRATE_HIR_ID } ;
3
3
use rustc_middle:: mir;
4
- use rustc_middle:: mir:: interpret:: { InterpError , PointerArithmetic , UndefinedBehaviorInfo } ;
4
+ use rustc_middle:: mir:: interpret:: PointerArithmetic ;
5
5
use rustc_middle:: ty:: layout:: FnAbiOf ;
6
6
use rustc_middle:: ty:: { self , Ty , TyCtxt } ;
7
7
use rustc_session:: lint:: builtin:: INVALID_ALIGNMENT ;
@@ -345,24 +345,15 @@ impl<'mir, 'tcx> interpret::Machine<'mir, 'tcx> for CompileTimeInterpreter<'mir,
345
345
required : Align ,
346
346
check : CheckAlignment ,
347
347
) -> InterpResult < ' tcx , ( ) > {
348
+ let err = err_ub ! ( AlignmentCheckFailed { has, required } ) . into ( ) ;
348
349
match check {
349
- CheckAlignment :: Error => {
350
- throw_ub ! ( AlignmentCheckFailed { has, required } )
351
- }
350
+ CheckAlignment :: Error => Err ( err) ,
352
351
CheckAlignment :: No => span_bug ! (
353
352
ecx. cur_span( ) ,
354
353
"`alignment_check_failed` called when no alignment check requested"
355
354
) ,
356
355
CheckAlignment :: FutureIncompat => {
357
- let err = ConstEvalErr :: new (
358
- ecx,
359
- InterpError :: UndefinedBehavior ( UndefinedBehaviorInfo :: AlignmentCheckFailed {
360
- has,
361
- required,
362
- } )
363
- . into ( ) ,
364
- None ,
365
- ) ;
356
+ let err = ConstEvalErr :: new ( ecx, err, None ) ;
366
357
ecx. tcx . struct_span_lint_hir (
367
358
INVALID_ALIGNMENT ,
368
359
ecx. stack ( ) . iter ( ) . find_map ( |frame| frame. lint_root ( ) ) . unwrap_or ( CRATE_HIR_ID ) ,
@@ -373,9 +364,9 @@ impl<'mir, 'tcx> interpret::Machine<'mir, 'tcx> for CompileTimeInterpreter<'mir,
373
364
db
374
365
} ,
375
366
) ;
367
+ Ok ( ( ) )
376
368
}
377
369
}
378
- Ok ( ( ) )
379
370
}
380
371
381
372
fn load_mir (
0 commit comments