mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-14 02:49:40 +00:00
Move trapping to trap_code.rs
This commit is contained in:
parent
cf287e3a05
commit
e83da7533c
@ -504,7 +504,7 @@ pub fn codegen_terminator_call<'a, 'tcx: 'a>(
|
||||
let ret_ebb = fx.get_ebb(dest);
|
||||
fx.bcx.ins().jump(ret_ebb, &[]);
|
||||
} else {
|
||||
fx.bcx.ins().trap(TrapCode::User(!0));
|
||||
trap_unreachable(&mut fx.bcx);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -202,7 +202,7 @@ fn codegen_fn_content<'a, 'tcx: 'a>(fx: &mut FunctionCx<'a, 'tcx, impl Backend>)
|
||||
} else {
|
||||
fx.bcx.ins().brz(cond, target, &[]);
|
||||
};
|
||||
fx.bcx.ins().trap(TrapCode::User(!0));
|
||||
trap_panic(&mut fx.bcx);
|
||||
}
|
||||
|
||||
TerminatorKind::SwitchInt {
|
||||
@ -230,7 +230,7 @@ fn codegen_fn_content<'a, 'tcx: 'a>(fx: &mut FunctionCx<'a, 'tcx, impl Backend>)
|
||||
crate::abi::codegen_terminator_call(fx, func, args, destination);
|
||||
}
|
||||
TerminatorKind::Resume | TerminatorKind::Abort | TerminatorKind::Unreachable => {
|
||||
fx.bcx.ins().trap(TrapCode::User(!0));
|
||||
trap_unreachable(&mut fx.bcx);
|
||||
}
|
||||
TerminatorKind::Yield { .. }
|
||||
| TerminatorKind::FalseEdges { .. }
|
||||
@ -680,7 +680,7 @@ pub fn trans_get_discriminant<'a, 'tcx: 'a>(
|
||||
let layout = value.layout();
|
||||
|
||||
if layout.abi == layout::Abi::Uninhabited {
|
||||
fx.bcx.ins().trap(TrapCode::User(!0));
|
||||
trap_unreachable(&mut fx.bcx);
|
||||
}
|
||||
match layout.variants {
|
||||
layout::Variants::Single { index } => {
|
||||
|
@ -101,10 +101,10 @@ pub fn codegen_intrinsic_call<'a, 'tcx: 'a>(
|
||||
// Insert non returning intrinsics here
|
||||
match intrinsic {
|
||||
"abort" => {
|
||||
fx.bcx.ins().trap(TrapCode::User(!0 - 1));
|
||||
trap_panic(&mut fx.bcx);
|
||||
}
|
||||
"unreachable" => {
|
||||
fx.bcx.ins().trap(TrapCode::User(!0 - 1));
|
||||
trap_unreachable(&mut fx.bcx);
|
||||
}
|
||||
_ => unimplemented!("unsupported instrinsic {}", intrinsic),
|
||||
}
|
||||
@ -423,6 +423,6 @@ pub fn codegen_intrinsic_call<'a, 'tcx: 'a>(
|
||||
let ret_ebb = fx.get_ebb(dest);
|
||||
fx.bcx.ins().jump(ret_ebb, &[]);
|
||||
} else {
|
||||
fx.bcx.ins().trap(TrapCode::User(!0));
|
||||
trap_unreachable(&mut fx.bcx);
|
||||
}
|
||||
}
|
||||
|
@ -81,6 +81,7 @@ mod link_copied;
|
||||
mod main_shim;
|
||||
mod metadata;
|
||||
mod pretty_clif;
|
||||
mod trap;
|
||||
mod vtable;
|
||||
|
||||
mod prelude {
|
||||
@ -121,6 +122,7 @@ mod prelude {
|
||||
pub use crate::abi::*;
|
||||
pub use crate::base::{trans_operand, trans_place};
|
||||
pub use crate::common::*;
|
||||
pub use crate::trap::*;
|
||||
pub use crate::{Caches, CodegenResults, CrateInfo};
|
||||
}
|
||||
|
||||
|
12
src/trap.rs
Normal file
12
src/trap.rs
Normal file
@ -0,0 +1,12 @@
|
||||
use cranelift::prelude::*;
|
||||
use cranelift::codegen::ir::TrapCode;
|
||||
|
||||
/// Trap code: user0
|
||||
pub fn trap_panic(bcx: &mut FunctionBuilder) {
|
||||
bcx.ins().trap(TrapCode::User(0));
|
||||
}
|
||||
|
||||
/// Trap code: user65535
|
||||
pub fn trap_unreachable(bcx: &mut FunctionBuilder) {
|
||||
bcx.ins().trap(TrapCode::User(!0));
|
||||
}
|
Loading…
Reference in New Issue
Block a user