]> git.lizzy.rs Git - rust.git/blob - src/trap.rs
Fix trans_get_discriminant for uninhabited types
[rust.git] / src / trap.rs
1 use crate::prelude::*;
2
3 /// Trap code: user0
4 pub fn trap_panic(bcx: &mut FunctionBuilder) {
5     bcx.ins().trap(TrapCode::User(0));
6 }
7
8 /// Trap code: user65535
9 pub fn trap_unreachable(bcx: &mut FunctionBuilder) {
10     bcx.ins().trap(TrapCode::User(!0));
11 }
12
13 pub fn trap_unreachable_ret_value<'tcx>(fx: &mut FunctionCx<'_, 'tcx, impl cranelift_module::Backend>, dest_layout: TyLayout<'tcx>) -> CValue<'tcx> {
14     let true_ = fx.bcx.ins().iconst(types::I32, 1);
15     fx.bcx.ins().trapnz(true_, TrapCode::User(!0));
16     let zero = fx.bcx.ins().iconst(fx.pointer_type, 0);
17     CValue::ByRef(zero, dest_layout)
18 }